内容纲要
建造者模式(Builder Pattern)是一种创建型设计模式,它可以让你构建复杂的对象,同时将其构建过程和表示(内部数据结构)分离。这样,同样的构建过程可以创建具有不同表示的对象。建造者模式对于具有多个可选参数的对象创建过程尤为有用。
“Builder Pattern”通常被翻译成“建造者模式”,但有时也会被称为“生成器模式”。尽管这两个翻译略有不同,但它们实际上指的是同一个设计模式。这种模式的核心思想是将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。这样可以让代码更具可读性和可维护性,同时提高复杂对象创建过程的灵活性。
以下是一个简单的Java实现:
- 定义一个产品类,表示最终要创建的对象:
public class Product {
private String partA;
private String partB;
private String partC;
public void setPartA(String partA) {
this.partA = partA;
}
public void setPartB(String partB) {
this.partB = partB;
}
public void setPartC(String partC) {
this.partC = partC;
}
public void show() {
System.out.println("Product has: " + partA + ", " + partB + ", " + partC);
}
}
- 创建一个抽象建造者(Builder)类,定义创建对象各个部分的方法:
public abstract class Builder {
protected Product product = new Product();
public abstract void buildPartA();
public abstract void buildPartB();
public abstract void buildPartC();
public Product getResult() {
return product;
}
}
- 创建具体建造者(Concrete Builder)类,实现抽象建造者定义的方法:
public class ConcreteBuilder extends Builder {
@Override
public void buildPartA() {
product.setPartA("Part A");
}
@Override
public void buildPartB() {
product.setPartB("Part B");
}
@Override
public void buildPartC() {
product.setPartC("Part C");
}
}
- 创建一个指挥者(Director)类,用于组织对象的构建过程:
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public Product construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
return builder.getResult();
}
}
- 使用建造者模式创建对象:
public class Main {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
Product product = director.construct();
product.show();
}
}
运行上述代码,你将看到:
Product has: Part A, Part B, Part C
建造者模式可以让你创建具有不同表示的复杂对象,同时将构建过程与表示分离。当你需要创建具有许多可选参数的对象时,建造者模式可以提供更好的可读性和易用性。