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()); } }