建造者模式
1.描述
建造者设计模式是一种创建型设计模式,主要用于将一个复杂对象的构建过程和其表示分离,使得相同的构建过程可以创建不同的表示。
在建造者设计模式中,通常包含以下几个组件和角色:
-
Director(指挥者):指挥者负责按照一定的步骤来调用建造者的方法,以便构建最终的对象。指挥者并不了解具体的构建细节,只负责指导构建过程的顺序。
-
Builder(建造者):建造者是一个接口或抽象类,定义了构建复杂对象所需的各个步骤的方法。具体的建造者类实现这个接口,根据具体需求来实现每个构建步骤。
-
ConcreteBuilder(具体建造者):具体建造者是建造者接口的具体实现类,负责实现每个构建步骤的具体逻辑。每个具体建造者可以构建不同表示形式的对象。
-
Product(产品):产品是最终构建出的复杂对象,包含多个部分。产品通常由具体建造者来构建,但客户端只需要通过指挥者即可获取构建好的产品对象。
-
Client(客户端):客户端负责创建指挥者对象,并指定具体的建造者来构建对象。客户端无需了解构建细节,只需知道如何使用指挥者获取构建好的产品即可。
通过建造者设计模式,可以实现将构建复杂对象的过程与其表示分离,从而提高系统的灵活性和可扩展性。同时,建造者模式也符合单一职责原则,使得代码更易于维护和扩展。
2.代码实例
电脑对象的组件
package BuildersPattern;
/**
* @author ZhenFrank
* @date 2024-03-21 14:41:17
*/// 电脑组件类
class Computer {
private String cpu;
private String memory;
private String hardDisk;
public Computer() {
}
public void setCpu(String cpu) {
this.cpu = cpu;
}
public void setMemory(String memory) {
this.memory = memory;
}
public void setHardDisk(String hardDisk) {
this.hardDisk = hardDisk;
}
@Override
public String toString() {
return "Computer{" +
"cpu='" + cpu + '\'' +
", memory='" + memory + '\'' +
", hardDisk='" + hardDisk + '\'' +
'}';
}
}
建造者接口和具体建造者类
// 建造者接口
interface ComputerBuilder {
void buildCPU();
void buildMemory();
void buildHardDisk();
Computer getResult();
}
// 具体建造者类
class ConcreteComputerBuilder implements ComputerBuilder {
private Computer computer = new Computer();
@Override
public void buildCPU() {
computer.setCpu("i7");
}
@Override
public void buildMemory() {
computer.setMemory("16GB");
}
@Override
public void buildHardDisk() {
computer.setHardDisk("1TB SSD");
}
@Override
public Computer getResult() {
return computer;
}
}
指导者
// 指导者类
class Director {
private ComputerBuilder builder;
public Director(ComputerBuilder builder) {
this.builder = builder;
}
public Computer construct() {
builder.buildCPU();
builder.buildMemory();
builder.buildHardDisk();
return builder.getResult();
}
}
建造者设计模式来构建电脑对象
public class Main {
public static void main(String[] args) {
ComputerBuilder builder = new ConcreteComputerBuilder();
Director director = new Director(builder);
Computer computer = director.construct();
System.out.println(computer);
}
}
3.建造者模式学习总结
建造者模式主要用于构建复杂对象,通过将构建过程拆分为多个步骤,并由指挥者来组织这些步骤的执行,实现了构建过程与表示分离的目的。这种模式在实际项目中可以帮助我们更好地管理对象的构建过程,提高系统的灵活性和可维护性。