9.26

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

 

实验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.注意编程规范。

posted @ 2025-01-02 15:25  jais  阅读(12)  评论(0)    收藏  举报