2024/10/29

软件设计实验五

[实验任务一]:计算机组装
使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。
实验要求:
1.    画出对应的类图;
其中,Computer 充当复合产品,ComputerBuilder 充当抽象建造者,Notebook、Desktop 和 Server充当具体建造者,Computer Assemble Director 充当指挥者,其 assemble()方法用于定义产品的构造过程。 
2.    提交源代码;
public class Computer {
    private String cpu;
    private String ram;//内存
    private String harddisk;//硬盘
    private String mainframe;//主机
    private String monitor;//显示屏

    public String getCpu() {
        return cpu;
    }

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

    public String getRam() {
        return ram;
    }

    public void setRam(String ram) {
        this.ram = ram;
    }

    public String getHarddisk() {
        return harddisk;
    }

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

    public String getMainframe() {
        return mainframe;
    }

    public void setMainframe(String mainframe) {
        this.mainframe = mainframe;
    }

    public String getMonitor() {
        return monitor;
    }

    public void setMonitor(String monitor) {
        this.monitor = monitor;
    }
}

public abstract class ComputerBuilder {
    protected Computer computer = new Computer();

    public abstract void buildCpu();
    public abstract void buildRam();
    public abstract void buildHarddisk();
    public abstract void buildMainframe();
    public abstract void buildMonitor();

    public Computer produceComputer() {
        return computer;
    }
}

public class ComputerAssembleDirector {
    private ComputerBuilder computerBuilder;
    public void setComputerBuilder(ComputerBuilder computerBuilder){
        this.computerBuilder = computerBuilder;
    }
    public Computer assemble() {
        computerBuilder.buildCpu();
        computerBuilder.buildRam();
        computerBuilder.buildHarddisk();
        computerBuilder.buildMainframe();
        computerBuilder.buildMonitor();
        return computerBuilder.produceComputer();
    }
}

public class Notebook extends ComputerBuilder {
    @Override
    public void buildCpu() {
        computer.setCpu("cpu1");
    }

    @Override
    public void buildRam() {
        computer.setRam("内存1");
    }

    @Override
    public void buildHarddisk() {
        computer.setHarddisk("硬盘1");
    }

    @Override
    public void buildMainframe() {
        computer.setMainframe("主机1");
    }

    @Override
    public void buildMonitor() {
        computer.setMonitor("显示器1");
    }
}

public class Desktop extends ComputerBuilder{
    @Override
    public void buildCpu() {
        computer.setCpu("cpu2");
    }

    @Override
    public void buildRam() {
        computer.setRam("内存2");
    }

    @Override
    public void buildHarddisk() {
        computer.setHarddisk("硬盘2");
    }

    @Override
    public void buildMainframe() {
        computer.setMainframe("主机2");
    }

    @Override
    public void buildMonitor() {
        computer.setMonitor("显示器2");
    }
}

public class Server extends ComputerBuilder {
    @Override
    public void buildCpu() {
        computer.setCpu("cpu3");
    }

    @Override
    public void buildRam() {
        computer.setRam("内存3");
    }

    @Override
    public void buildHarddisk() {
        computer.setHarddisk("硬盘3");
    }

    @Override
    public void buildMainframe() {
        computer.setMainframe("主机3");
    }

    @Override
    public void buildMonitor() {
        computer.setMonitor("显示器3");
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建指挥者对象
        ComputerAssembleDirector director = new ComputerAssembleDirector();

        // 创建具体建造者对象
        ComputerBuilder notebookBuilder = new Notebook();
        ComputerBuilder desktopBuilder = new Desktop();
        ComputerBuilder serverBuilder = new Server();

        // 设置指挥者使用的建造者
        director.setComputerBuilder(notebookBuilder);
        Computer notebook = director.assemble();
        System.out.println("notebook: " + notebook.getCpu() + ", " + notebook.getRam() + ", " + notebook.getHarddisk() + ", " + notebook.getMainframe() + ", " + notebook.getMonitor());

        director.setComputerBuilder(desktopBuilder);
        Computer desktop = director.assemble();
        System.out.println("desktop: " + desktop.getCpu() + ", " + desktop.getRam() + ", " + desktop.getHarddisk() + ", " + desktop.getMainframe() + ", " + desktop.getMonitor());

        director.setComputerBuilder(serverBuilder);
        Computer server = director.assemble();
        System.out.println("server: " + server.getCpu() + ", " + server.getRam() + ", " + server.getHarddisk() + ", " + server.getMainframe() + ", " + server.getMonitor());
    }
}

 

posted @ 2024-10-29 11:12  伐木工熊大  阅读(5)  评论(0)    收藏  举报