我们考虑一种情况,在一个类初始化时,我们要构造多个参数时,毫无疑问,我们可以这样做:
|
|
但是,如果c 和 d 是可选参数,我们并不想在构造器中将默认值传入,改怎么做呢?
|
|
三四个参数还好说,但是参数越来越多的时候,就变得很难管理了。我们也很容易想到重叠构造器模式:
|
|
此时的重叠构造器模式在参数越来越多的时候也会变的难以管理,于是想到了另一种替代颁发,JavaBean模式:
|
|
此时创建实例就容易多了,代码也容易阅读:
|
|
不过,因为构造过程被分到了几个调用中,在调用过程中可能出现不一致的状态,即线程不安全。于是我们有了另一种解决以上问题的办法:我们不值接生成想要的对象,而是让客户端利用所有必要的参数调用构造器,从而得到一个builder对象,在具体实现中调用类似setter的方法,来设置每个可选的相关参数。范例如下:
|
|