建造者模式是一种创建型设计模式,它允许你创建复杂对象的不同部分,并将它们组装成一个完整的对象。下面是一个简单的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()方法,用于指导建造者创建产品。
最后,在客户端代码中,我们使用具体建造者类来创建产品,并使用指挥者来指导建造者创建产品。
这个示例展示了如何使用建造者模式来创建复杂对象的不同部分,并将它们组装成一个完整的对象。