建造者模式是一种创建型设计模式,它允许你创建复杂对象的不同部分,并将它们组装成一个完整的对象。下面是一个简单的Java版建造者模式示例:
// 产品类
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: " + partA + " " + partB + " " + partC);
}
}
// 抽象建造者类
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;
}
}
// 具体建造者类1
class ConcreteBuilder1 extends Builder {
public void buildPartA() {
product.setPartA("PartA1");
}
public void buildPartB() {
product.setPartB("PartB1");
}
public void buildPartC() {
product.setPartC("PartC1");
}
}
// 具体建造者类2
class ConcreteBuilder2 extends Builder {
public void buildPartA() {
product.setPartA("PartA2");
}
public void buildPartB() {
product.setPartB("PartB2");
}
public void buildPartC() {
product.setPartC("PartC2");
}
}
// 指挥者类
class Director {
public void construct(Builder builder) {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Director director = new Director();
Builder builder1 = new ConcreteBuilder1();
director.construct(builder1);
Product product1 = builder1.getResult();
product1.show();
Builder builder2 = new ConcreteBuilder2();
director.construct(builder2);
Product product2 = builder2.getResult();
product2.show();
}
}在这个示例中,我们定义了一个产品类Product,它包含了三个部分partA、partB和partC,并提供了一个show()方法来展示产品的内容。
然后我们定义了一个抽象建造者类Builder,它包含了三个抽象方法buildPartA()、buildPartB()和buildPartC(),用于创建产品的不同部分,并提供了一个getResult()方法来获取最终的产品。
接着,我们定义了两个具体建造者类ConcreteBuilder1和ConcreteBuilder2,它们分别实现了Builder接口,并实现了自己的产品创建方法。
然后我们定义了一个指挥者类Director,它包含了一个construct()方法,用于指导建造者创建产品。
最后,在客户端代码中,我们使用具体建造者类来创建产品,并使用指挥者来指导建造者创建产品。
这个示例展示了如何使用建造者模式来创建复杂对象的不同部分,并将它们组装成一个完整的对象。