建造者模式

概述

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

将构建一个复杂对象所需的必要过程规定到一个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();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值