其他分享
首页 > 其他分享> > 建造者模式

建造者模式

作者:互联网

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

宽泛的讲:如果你需要将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示(客户端需要一个胖小人,具体怎么画靠我们自己去实现,客户端不需要知道)。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到他们,而具体建造的过程和细节就不需要知道。

场景:主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。建造者模式的好处就是是建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以需要改变一个产品的内部表示,在一定一个具体的建造者就可以。

产品类:

//产品类,由多个部件组成
public class Product {
    List<String>  parts = new ArrayList<>();
    public void add(String part){
        parts.add(part);
    }
    public void show(){
        for (String part:parts) {
            System.out.println(part);
        }
    }
}

抽象建造者类:

public abstract class Builder {
    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract Product getResult();
}

具体的建造者:

public class ConcreteBuilder1 extends Builder{
    private Product product = new Product();


    @Override
    public void buildPartA() {
        product.add("部件A");
    }

    @Override
    public void buildPartB() {
        product.add("部件B");
    }

    @Override
    public Product getResult() {
        return product;
    }
}

指挥者类:

public class Director {
    public void Construct(Builder builder){
        builder.buildPartA();
        builder.buildPartB();
    }
}

Main:

public class Main {
    public static void main(String[] args) {
        Director director = new Director();
        Builder builder1 = new ConcreteBuilder1();
        director.Construct(builder1);
        Product product = builder1.getResult();
        product.show();

    }
}

 

标签:product,void,建造,Product,模式,class,public
来源: https://www.cnblogs.com/wxynb/p/15866514.html