设计模式之Builder建造者模式

Builder模式:

主要解决构造函数参数过多的问题;

起因:对象有多个全局变量;

解决方法

1、多个构造方法,第一个传入的都是必传的,后面的构造方法依次加入可选参数;类似于自定义view的构造方法;

缺点:可读性差;调用麻烦,比如两个必选参数,而想要多传第四个参数时,还得先给第三个参数设置默认值;

2、空构造方法,为每一个属性设置settergetter

缺点 :对象会产生不一致的状态,必须将所有set方法全调用完成之后才行;类是可变的,不可变类的好处都消失了。

Builder:

步骤

1.类的属性都是不可变的,用final修饰,在构造方法中设置了值并对外只提供getter方法;

2.私有化构造方法,参数为内部静态类Bulider

3.内部静态类Builder,构造方法中参数只接收必选的对于可选参数,分别通过返回值为Builder对象的各方法设置;

4.最后在Builder类中构建返回值为外部User对象的build方法来new出对象;

优点:解决了前两种方法的缺点;链式调用可读性更佳;Builder内部类构造方法只接收必传参数,且用final修饰;

缺点:产生多余的Builder对象,消耗内存;而Builder通常用static修饰,静态类在没有loadJVM前,所有属性方法均不在内存中;

注意:由于Builder是非线程安全的,所以要在Builder内部类中检查一个变量的合法性,必须等到对象创建完成后再检查;

实例:AlertDialog;

参考:http://www.jianshu.com/p/e2a2fe3555b9

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值