Skip to content

建造者模式

字数: 0 字 时长: 0 分钟

简介

建造者模式(Builder Pattern)核心思想是:把一个复杂对象的创建过程拆分为一步步构建

UML 类图

builder.webp

  • 产品类(Product):要构建的复杂对象,包含多个组成部分
  • 抽象建造者类(Builder):定义构建产品各个部分的抽象方法,以及返回最终产品的方法
  • 具体建造类(ConcreteBuilder):实现 Builder 接口,负责各个部分的具体构建,并返回最终产品
  • 指挥者类(Director):统一指挥建造者按照一定步骤来构建产品,屏蔽了构建过程的细节
  • 客户端(client):创建指挥者类,并调用其方法来构建产品

实现示例

模拟电脑的创建过程,这里假定电脑只包含 CPUMemoryHardDisk 三个部分

java
// 1. 定义产品类
public class Computer {
    private String cpu;
    private String memory;
    private String hardDisk;
    // ... 省略 getter、setter 方法
}

// 2. 定义抽象建造者
public abstract class ComputerBuilder {
    protected Computer computer = new Computer();
    public abstract void buildCPU();
    public abstract void buildMemory();
    public abstract void buildHardDisk();
    public Computer getResult() {
        return computer;
    }
}

// 3. 定义具体的建造者实现具体的建造过程
public class ConcreteComputerBuilder extends ComputerBuilder {
    public void buildCPU() {
        computer.setCPU("Intel i7");
    }
    public void buildMemory() {
        computer.setMemory("16G");
    }
    public void buildHardDisk() {
        computer.setHardDisk("1T");
    }
}

// 4. 定义指挥者,组织建造顺序
public class ComputerDirector {
    private ComputerBuilder builder;
    public Dictionary(ComputerBuilder builder) {
        this.builder = builder;
    }
    public Computer build() {
        // 定义建造顺序
        builder.buildCPU();
        builder.buildMemory();
        builder.buildHardDisk();
        return builder.getComputer();
    }
}

// 5. Client 调用指挥者组装电脑
public static void main(String[] args) {
    Builder builder = new ComputerBuilder();
    ComputerDirector director = new ComputerDirector(builder);
    Computer computer = director.build();
}