今天准备复习软件设计。
先看一下以前写的代码:
// 计算机产品类
class Computer {
private String type; // 计算机类型(笔记本/台式机)
private String cpu; // CPU
private String memory; // 内存
private String hardDisk; // 硬盘
private String host; // 主机
public void setType(String type) {this.type = type;
}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 type + "配置:\n" +"CPU: " + cpu + "\n" +"内存: " + memory + "\n" +"硬盘: " + hardDisk + "\n" +"主机: " + host;
}
}
// 建造者接口
interface ComputerBuilder {
void buildCPU();
void buildMemory();
void buildHardDisk();
void buildHost();
Computer getComputer();
}
// 笔记本电脑建造者
class LaptopBuilder implements ComputerBuilder {
private Computer computer = new Computer();
public LaptopBuilder() {computer.setType("笔记本电脑");
}@Override
public void buildCPU() {computer.setCpu("笔记本专用CPU(低功耗)");
}@Override
public void buildMemory() {computer.setMemory("笔记本专用DDR4内存");
}@Override
public void buildHardDisk() {computer.setHardDisk("M.2固态硬盘");
}@Override
public void buildHost() {computer.setHost("一体化笔记本主机(含显示屏)");
}@Override
public Computer getComputer() {return computer;
}
}
// 台式机建造者
class DesktopBuilder implements ComputerBuilder {
private Computer computer = new Computer();
public DesktopBuilder() {computer.setType("台式计算机");
}@Override
public void buildCPU() {computer.setCpu("台式机高性能CPU");
}@Override
public void buildMemory() {computer.setMemory("台式机DDR5内存");
}@Override
public void buildHardDisk() {computer.setHardDisk("SATA机械硬盘+NVMe固态硬盘");
}@Override
public void buildHost() {computer.setHost("独立台式机箱(含电源)");
}@Override
public Computer getComputer() {return computer;
}
}
// 指挥者类(负责组装流程)
class Director {
private ComputerBuilder builder;
public Director(ComputerBuilder builder) {this.builder = builder;
}// 组装计算机的流程
public void construct() {builder.buildCPU();builder.buildMemory();builder.buildHardDisk();builder.buildHost();
}
}
// 测试类
public class ComputerAssembly {
public static void main(String[] args) {
// 组装笔记本电脑
ComputerBuilder laptopBuilder = new LaptopBuilder();
Director laptopDirector = new Director(laptopBuilder);
laptopDirector.construct();
Computer laptop = laptopBuilder.getComputer();
System.out.println(laptop);
System.out.println("---------------------");// 组装台式机ComputerBuilder desktopBuilder = new DesktopBuilder();Director desktopDirector = new Director(desktopBuilder);desktopDirector.construct();Computer desktop = desktopBuilder.getComputer();System.out.println(desktop);
}
}
这是建造者模式
之后还需要结合类图理解