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

}
这是建造者模式
之后还需要结合类图理解

posted @ 2025-12-10 09:26  Thanatos。syts  阅读(2)  评论(0)    收藏  举报