1210随笔
今天准备复习软件设计。
先看一下以前写的代码:
// 计算机产品类
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);
}
}
这是建造者模式
之后还需要结合类图理解

浙公网安备 33010602011771号