您的位置:首页 > 产品设计 > UI/UE

设计模式之Builder建造者模式

2017-06-20 10:16 543 查看
Builder模式:
主要解决构造函数参数过多的问题;
起因:对象有多个全局变量;
解决方法:
1、多个构造方法,第一个传入的都是必传的,后面的构造方法依次加入可选参数;类似于自定义view的构造方法;
缺点:可读性差;调用麻烦,比如两个必选参数,而想要多传第四个参数时,还得先给第三个参数设置默认值;
2、空构造方法,为每一个属性设置setter和getter;
缺点
:对象会产生不一致的状态,必须将所有set方法全调用完成之后才行;类是可变的,不可变类的好处都消失了。
Builder:
步骤
1.类的属性都是不可变的,用final修饰,在构造方法中设置了值并对外只提供getter方法;
2.私有化构造方法,参数为内部静态类Bulider;
3.内部静态类Builder,构造方法中参数只接收必选的;对于可选参数,分别通过返回值为Builder对象的各方法设置;
4.最后在Builder类中构建返回值为外部User对象的build方法来new出对象;
优点:解决了前两种方法的缺点;链式调用可读性更佳;Builder内部类构造方法只接收必传参数,且用final修饰;
缺点:产生多余的Builder对象,消耗内存;而Builder通常用static修饰,静态类在没有load进JVM前,所有属性方法均不在内存中;
注意:由于Builder是非线程安全的,所以要在Builder内部类中检查一个变量的合法性,必须等到对象创建完成后再检查;
实例:AlertDialog;
参考:http://www.jianshu.com/p/e2a2fe3555b9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: