建造者模式

概述

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

将构建一个复杂对象所需的必要过程规定到一个Builder接口之中,由不同的实现类实现即“同样构建过程创建不同表示”。最后,由一个指挥者Director指挥建造过程。

示例代码

class Product{
    private List<String> parts = new ArrayList<>();
    public void add(String part){
        parts.add(part);
    }
    public void show(){
        foreach(String part : parts){
            System.out.println(part);
        }
    }
}
interface Builder{
    void buildPartA();
    void buildPartB();
    Product getResult();
}
class ConcretBuilder1 implements Builder{
    private Product product = new Product();
    public void buildPartA(){
        product.add("部件A");
    }
    public void buildPartB(){
        product.add("部件B");
    }
    public Product getResult(){
        return product;
    }
}
class ConcretBuilder2 implements Builder{
    private Product product = new Product();
    public void buildPartA(){
        product.add("部件X");
    }
    public void buildPartB(){
        product.add("部件Y");
    }
    public Product getResult(){
        return product;
    }
}
class Director{
    public Product construct(Builder builder){
        builder.buildPartsA();
        builder.buildPartsB();
        return builder.getResult();
    }
}
//客户端
Builder b1 = new ConcretBuilder1();
Builder b2 = new ConcretBuilder2();
Director director = new Director();

Product p1 = director.construct(b1);
p1.show();

Product p2 = director.construct(b2);
p2.show();

 

全部评论

相关推荐

10-10 01:10
已编辑
深圳大学 测试开发
面了100年面试不知...:六月到九月,四个项目一个实习,是魔丸吗
投了多少份简历才上岸
点赞 评论 收藏
分享
09-21 23:16
门头沟学院 Java
传奇逃兵王:招不起就别招,叽里咕噜说啥呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务