设计模式之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

猜你喜欢

转载自blog.csdn.net/taambernk520/article/details/73480713