2024.10.29

设计模式实验五

软件设计                  石家庄铁道大学信息学院

 

实验5:建造者模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解建造者模式的动机,掌握该模式的结构;

2、能够利用建造者模式解决实际问题。

 
   

 

 

[实验任务一]:计算机组装

使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。

实验要求:

1.  画出对应的类图;

 

 

2.提交源代码;

// 产品类:Computer

class Computer {

    private String CPU;

    private String memory;

    private String hardDrive;

    private String computerCase;

 

    public void setCPU(String CPU) {

        this.CPU = CPU;

    }

 

    public void setMemory(String memory) {

        this.memory = memory;

    }

 

    public void setHardDrive(String hardDrive) {

        this.hardDrive = hardDrive;

    }

 

    public void setComputerCase(String computerCase) {

        this.computerCase = computerCase;

    }

 

    public void showSpecifications() {

        System.out.println("CPU: " + CPU);

        System.out.println("Memory: " + memory);

        System.out.println("Hard Drive: " + hardDrive);

        System.out.println("Computer Case: " + computerCase);

    }

}

 

// 抽象建造者类:ComputerBuilder

abstract class ComputerBuilder {

    protected Computer computer = new Computer();

 

    public abstract void buildCPU();

    public abstract void buildMemory();

    public abstract void buildHardDrive();

    public abstract void buildCase();

 

    public Computer getComputer() {

        return computer;

    }

}

 

// 具体建造者:LaptopBuilder

class LaptopBuilder extends ComputerBuilder {

    public void buildCPU() {

        computer.setCPU("Laptop CPU");

    }

 

    public void buildMemory() {

        computer.setMemory("Laptop Memory");

    }

 

    public void buildHardDrive() {

        computer.setHardDrive("Laptop Hard Drive");

    }

 

    public void buildCase() {

        computer.setComputerCase("Laptop Case");

    }

}

 

// 具体建造者:DesktopBuilder

class DesktopBuilder extends ComputerBuilder {

    public void buildCPU() {

        computer.setCPU("Desktop CPU");

    }

 

    public void buildMemory() {

        computer.setMemory("Desktop Memory");

    }

 

    public void buildHardDrive() {

        computer.setHardDrive("Desktop Hard Drive");

    }

 

    public void buildCase() {

        computer.setComputerCase("Desktop Case");

    }

}

 

// 指挥者类:Director

class Director {

    private ComputerBuilder builder;

 

    public Director(ComputerBuilder builder) {

        this.builder = builder;

    }

 

    public void constructComputer() {

        builder.buildCPU();

        builder.buildMemory();

        builder.buildHardDrive();

        builder.buildCase();

    }

 

    public Computer getComputer() {

        return builder.getComputer();

    }

}

 

// 测试类

public class Client {

    public static void main(String[] args) {

        // 构建笔记本电脑

        ComputerBuilder laptopBuilder = new LaptopBuilder();

        Director director1 = new Director(laptopBuilder);

        director1.constructComputer();

        Computer laptop = director1.getComputer();

        System.out.println("Laptop Specifications:");

        laptop.showSpecifications();

 

        // 构建台式电脑

        ComputerBuilder desktopBuilder = new DesktopBuilder();

        Director director2 = new Director(desktopBuilder);

        director2.constructComputer();

        Computer desktop = director2.getComputer();

        System.out.println("\nDesktop Specifications:");

        desktop.showSpecifications();

    }

}

3.注意编程规范。

posted @ 2024-12-25 09:57  cvjj  阅读(9)  评论(0)    收藏  举报