2024.11.10
构建者模式(Builder Pattern)是一种创建型设计模式,它提供了一种分步骤构建复杂对象的方法。这种模式允许你通过指定复杂对象的类型和内容,逐步构造对象,并且可以控制对象的构造过程。构建者模式的主要优点是它能够将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
构建者模式的主要组件包括:
- Product(产品角色):一个包含多个组件的复杂对象。
- Builder(抽象构建者):一个包含创建产品的方法的接口,这些方法返回一个产品类型的对象。
- ConcreteBuilder(具体构建者):实现Builder接口的具体类,它们返回一个具体产品类的对象。
- Director(指挥者):一个负责安排构建过程的类,它接受一个Builder对象,并在内部持有这个对象。指挥者使用这个Builder对象来创建复杂对象的步骤。
- Client(客户):一个使用指挥者和构建者来创建复杂对象的类。
构建者模式的典型代码实现如下:
// 产品类
public class Product {
private List<String> parts;
public void add(String part) {
parts.add(part);
}
public void show() {
System.out.println("Product Parts---------------------");
for (String part : parts) {
System.out.println(part);
}
}
}
// 抽象构建者
public interface Builder {
void buildPartA();
void buildPartB();
Product getResult();
}
// 具体构建者
public class ConcreteBuilder implements Builder {
private Product product;
public ConcreteBuilder() {
this.product = new Product();
}
public void buildPartA() {
product.add("PartA");
}
public void buildPartB() {
product.add("PartB");
}
public Product getResult() {
return product;
}
}
// 指挥者
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void construct() {
builder.buildPartA();
builder.buildPartB();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Director director = new Director(new ConcreteBuilder());
director.construct();
Product product = director.getBuilder().getResult();
product.show();
}
}
在这个例子中,Product
是一个包含多个组件的产品,Builder
是一个抽象构建者接口,ConcreteBuilder
是具体的构建者实现,Director
是指挥者,它指导构建过程,Client
是客户端代码,它使用指挥者和构建者来创建产品。
构建者模式非常适合于那些需要创建复杂对象的场景,尤其是当这些对象的创建步骤很多,或者创建过程可能会变化时。使用构建者模式可以提高代码的灵活性和可维护性。