建造者模式
字数: 0 字 时长: 0 分钟
简介
建造者模式(Builder Pattern)核心思想是:把一个复杂对象的创建过程拆分为一步步构建。
UML 类图
- 产品类(Product):要构建的复杂对象,包含多个组成部分
- 抽象建造者类(Builder):定义构建产品各个部分的抽象方法,以及返回最终产品的方法
- 具体建造类(ConcreteBuilder):实现 Builder 接口,负责各个部分的具体构建,并返回最终产品
- 指挥者类(Director):统一指挥建造者按照一定步骤来构建产品,屏蔽了构建过程的细节
- 客户端(client):创建指挥者类,并调用其方法来构建产品
实现示例
模拟电脑的创建过程,这里假定电脑只包含 CPU
、Memory
、HardDisk
三个部分
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();
}