建造者模式是一种创建型设计模式,它允许你创建一个复杂对象的不同部分并将它们组装在一起,以产生最终的对象。以下是一个简单的 Java 示例,演示了建造者模式的用法:
java
// 产品类
class Computer {
private String cpu;
private String ram;
private String storage;
private String gpu;
public void setCpu(String cpu) {
this.cpu = cpu;
}
public void setRam(String ram) {
this.ram = ram;
}
public void setStorage(String storage) {
this.storage = storage;
}
public void setGpu(String gpu) {
this.gpu = gpu;
}
@Override
public String toString() {
return "Computer{" +
"cpu='" + cpu + '\'' +
", ram='" + ram + '\'' +
", storage='" + storage + '\'' +
", gpu='" + gpu + '\'' +
'}';
}
}
// 抽象建造者
interface ComputerBuilder {
void buildCPU();
void buildRAM();
void buildStorage();
void buildGPU();
Computer getComputer();
}
// 具体建造者
class HighEndComputerBuilder implements ComputerBuilder {
private Computer computer;
public HighEndComputerBuilder() {
computer = new Computer();
}
public void buildCPU() {
computer.setCpu("Intel Core i9");
}
public void buildRAM() {
computer.setRam("32GB DDR4");
}
public void buildStorage() {
computer.setStorage("1TB SSD");
}
public void buildGPU() {
computer.setGpu("NVIDIA GeForce RTX 3080");
}
public Computer getComputer() {
return computer;
}
}
// 指挥者
class Director {
private ComputerBuilder computerBuilder;
public void setComputerBuilder(ComputerBuilder computerBuilder) {
this.computerBuilder = computerBuilder;
}
public Computer buildComputer() {
computerBuilder.buildCPU();
computerBuilder.buildRAM();
computerBuilder.buildStorage();
computerBuilder.buildGPU();
return computerBuilder.getComputer();
}
}
// 示例
public class Main {
public static void main(String[] args) {
Director director = new Director();
ComputerBuilder highEndBuilder = new HighEndComputerBuilder();
director.setComputerBuilder(highEndBuilder);
Computer highEndComputer = director.buildComputer();
System.out.println("High-end Computer:");
System.out.println(highEndComputer);
}
}
在这个例子中,Computer 类是产品类,它具有一些属性如 CPU、RAM、存储和 GPU。ComputerBuilder 接口定义了建造者的方法,包括构建 CPU、RAM、存储和 GPU。HighEndComputerBuilder 类是一个具体的建造者,负责构建高端计算机的各个部件。Director 类负责指挥建造者构建计算机,它可以接受不同的建造者来构建不同配置的计算机。
在 Main 类中,我们创建了一个指挥者和一个高端计算机的建造者,并指定给指挥者。然后指挥者使用建造者构建高端计算机,最终得到一个完整的高端计算机对象。