建造者

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

类图:

代码:

publicclass Product {

    private List<Object> product=new ArrayList<Object>();

    publicvoid add(Object part){

       product.add(part);

    }

    public Object result(){

       returnproduct;

    }

}

publicabstractclass Builder {

    publicabstractvoid buildPart(Object part);

    publicabstract Object getResult();

}

publicclass ConcreteBuilder extends Builder{

    private Product product=new Product();

    @Override

    public Object getResult() {

       returnproduct.result();

    }

    @Override

    publicvoid buildPart(Object part) {

       this.product.add(part);

    }

}

publicclass Director {

      public Object conStruct(Builder builder){

         return builder.getResult();

      }

}

publicstaticvoid main(String[] args) {

       //创建建造者

       Builder builder=new ConcreteBuilder();

       builder.buildPart("head");

       builder.buildPart("body");

       builder.buildPart("foot");

       //调用创建者

       Director director=new Director();

       Object pro=director.conStruct(builder);

       System.out.println(pro);

    }

优点:一个整体和部分的解耦,而且扩展性很好。

缺点:Builder类的方法与Director类的调用方法耦合度很高。如果增加一部分要修改两个类,而且每个整体的部分的数量都要一样。

建造者适合一些对象由其他对象组成的情况。(电脑由主机,屏幕,鼠标,键盘……)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值