妙博客

主机评测 香港服务器 洛杉矶VPS测评

设计模式-JAVA-建造者模式(Builder)

建造者模式是一种创建型设计模式,它允许你创建复杂对象的不同部分,并将它们组装成一个完整的对象。下面是一个简单的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()方法,用于指导建造者创建产品。


最后,在客户端代码中,我们使用具体建造者类来创建产品,并使用指挥者来指导建造者创建产品。


这个示例展示了如何使用建造者模式来创建复杂对象的不同部分,并将它们组装成一个完整的对象。


JAVA7大原则和23种设计模式汇总,点我查看

Copyright Your 142132.com Rights Reserved. 赣ICP备17010829号-2