实验5:建造者模式

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

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

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

 

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

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

实验要求:

1. 画出对应的类图;

 

 

2.提交源代码;

// 计算机产品类

class Computer {
    private String cpu;
    private String memory;
    private String hardDisk;
    private String host;

    public void setCpu(String cpu) {
        this.cpu = cpu;
    }

    public void setMemory(String memory) {
        this.memory = memory;
    }

    public void setHardDisk(String hardDisk) {
        this.hardDisk = hardDisk;
    }

    public void setHost(String host) {
        this.host = host;
    }

    @Override
    public String toString() {
        return "Computer{" +
                "cpu='" + cpu + '\'' +
                ", memory='" + memory + '\'' +
                ", hardDisk='" + hardDisk + '\'' +
                ", host='" + host + '\'' +
                '}';
    }
}

// 抽象建造者
interface ComputerBuilder {
    void buildCPU();
    void buildMemory();
    void buildHardDisk();
    void buildHost();
    Computer getComputer();
}

// 笔记本电脑建造者
class LaptopBuilder implements ComputerBuilder {
    private Computer computer = new Computer();

    @Override
    public void buildCPU() {
        computer.setCpu("笔记本CPU");
    }

    @Override
    public void buildMemory() {
        computer.setMemory("笔记本内存");
    }

    @Override
    public void buildHardDisk() {
        computer.setHardDisk("笔记本硬盘");
    }

    @Override
    public void buildHost() {
        computer.setHost("笔记本主机");
    }

    @Override
    public Computer getComputer() {
        return computer;
    }
}

// 台式电脑建造者
class DesktopBuilder implements ComputerBuilder {
    private Computer computer = new Computer();

    @Override
    public void buildCPU() {
        computer.setCpu("台式机CPU");
    }

    @Override
    public void buildMemory() {
        computer.setMemory("台式机内存");
    }

    @Override
    public void buildHardDisk() {
        computer.setHardDisk("台式机硬盘");
    }

    @Override
    public void buildHost() {
        computer.setHost("台式机主机");
    }

    @Override
    public Computer getComputer() {
        return computer;
    }
}

// 指挥者
class ComputerDirector {
    public void constructComputer(ComputerBuilder builder) {
        builder.buildCPU();
        builder.buildMemory();
        builder.buildHardDisk();
        builder.buildHost();
    }
}







public class Main {
    public static void main(String[] args) {
        // 创建笔记本电脑建造者
        ComputerBuilder laptopBuilder = new LaptopBuilder();
        // 创建指挥者并指挥构建笔记本电脑
        ComputerDirector director = new ComputerDirector();
        director.constructComputer(laptopBuilder);
        Computer laptop = laptopBuilder.getComputer();
        System.out.println("组装的笔记本电脑:" + laptop);

        // 创建台式电脑建造者
        ComputerBuilder desktopBuilder = new DesktopBuilder();
        // 指挥构建台式电脑
        director.constructComputer(desktopBuilder);
        Computer desktop = desktopBuilder.getComputer();
        System.out.println("组装的台式电脑:" + desktop);
    }
}

3.注意编程规范。