建造者模式
文章目录
什么是建造者模式
依赖倒转原则 = 抽象不应该依赖细节,细节应该依赖于抽象
对流程进行抽象,流程中具体细节依赖于这个抽象
过程是稳定的,细节是不同的
建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
建造者模式解析
- Director:指挥者,是构建一个使用Builder接口的对象
- Builder:是为创建一个Product对象的各个部件指定的抽象接口
- 具体建造者,实现Builder接口,构造和装配各个部件
- Procuct:具体产品
通过示例去了解建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。以下是一个使用 Java 实现建造者模式的示例,以创建不同配置的电脑(Computer)为例:
1.定义电脑类(Product):
java
public class Computer {
private String cpu;
private String gpu;
private int ram;
private int storage;
private Computer(ComputerBuilder builder) {
this.cpu = builder.cpu;
this.gpu = builder.gpu;
this.ram = builder.ram;
this.storage = builder.storage;
}
public String getCpu() {
return cpu;
}
public String getGpu() {
return gpu;
}
public int getRam() {
return ram;
}
public int getStorage() {
return storage;
}
@Override
public String toString() {
return "Computer{" +
"cpu='" + cpu + '\'' +
", gpu='" + gpu + '\'' +
", ram=" + ram +
", storage=" + storage +
'}';
}
}
java
public static class ComputerBuilder {
private String cpu;
private String gpu;
private int ram;
private int storage;
public ComputerBuilder withCpu(String cpu) {
this.cpu = cpu;
return this;
}
public ComputerBuilder withGpu(String gpu) {
this.gpu = gpu;
return this;
}
public ComputerBuilder withRam(int ram) {
this.ram = ram;
return this;
}
public ComputerBuilder withStorage(int storage) {
this.storage = storage;
return this;
}
public Computer build() {
return new Computer(this);
}
}
2.在客户端代码中,通过建造者类 Computer.ComputerBuilder 创建不同配置的电脑实例:
java
public class BuilderPatternDemo {
public static void main(String[] args) {
// 创建一台基础配置的电脑
Computer basicComputer = new Computer.ComputerBuilder()
.withCpu("Intel i5")
.withGpu("Nvidia GTX 1650")
.withRam(8)
.withStorage(512)
.build();
System.out.println("Basic Computer: " + basicComputer);
// 创建一台高端配置的电脑
Computer advancedComputer = new Computer.ComputerBuilder()
.withCpu("Intel i9")
.withGpu("Nvidia RTX 3080")
.withRam(32)
.withStorage(1024)
.build();
System.out.println("Advanced Computer: " + advancedComputer);
}
}
运行 BuilderPatternDemo 类的 main 方法,输出结果应为:
Basic Computer: Computer{cpu='Intel i5', gpu='Nvidia GTX 1650', ram=8, storage=512}
Advanced Computer: Computer{cpu='Intel i9', gpu='Nvidia RTX 3080', ram=32, storage=1024}