定义
建造者模式是一种创建型设计模式,它提供了一种封装一个对象的复杂构造过程的解决方案。在建造者模式中,我们将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
示例代码
以下是一个简单的Java代码示例,演示了建造者模式的使用:
首先,我们定义一个产品类,这是我们要构建的复杂对象:
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 showProduct() {
System.out.println("PartA: " + partA);
System.out.println("PartB: " + partB);
System.out.println("PartC: " + partC);
}
}
然后,我们定义一个建造者抽象类:
java
public abstract class Builder {
protected Product product = new Product();
public abstract void buildPartA();
public abstract void buildPartB();
public abstract void buildPartC();
public Product getProduct() {
return product;
}
}
接着,我们创建实现建造者抽象类的具体建造者类:
java
public class ConcreteBuilder extends Builder {
@Override
public void buildPartA() {
product.setPartA("PartA built by ConcreteBuilder");
}
@Override
public void buildPartB() {
product.setPartB("PartB built by ConcreteBuilder");
}
@Override
public void buildPartC() {
product.setPartC("PartC built by ConcreteBuilder");
}
}
最后,我们创建一个指挥者类,用于控制建造过程:
java
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public Product construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
return builder.getProduct();
}
}
在客户端代码中,我们可以使用这些类来创建复杂对象:
java
public class BuilderPatternDemo {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
Product product = director.construct();
product.showProduct();
}
}
在这个例子中,BuilderPatternDemo
类使用Director
类和ConcreteBuilder
类来创建一个Product
对象。