在实际建模设计类时,我们会遇到一个包含多个属性的类,比如,一个食品标签,内容包括其配方,含有的营养比例,生产日期,生产地址,保质期,生产标准等。
一般的设计方法,我们会首先想到重叠构造方法,即重载构造方法,只是参数不同而已。这种模式的弊端是,客户端代码不易阅读和编写,参数越多,越容易出错。
第二种方法是JavaBeans模式。在此模式下,先调用一个无参构造器来创建对象,然后调用setter方法来设置每个必要的参数,以及每个相关的可选参数。这种模式比一般的重叠方法简化了创建对象的步骤,更容易阅读和编写客户端代码。但是这种模式最大的缺点就是难以保障线程安全。
第三种就是Builder模式。该模式集既保证了代码的可读性,也保证了安全性。
所以,
如果类的构造器或者静态工厂中具有多个参数时,设计这种类时,首选Builder模式,其比一般的构造方法易于阅读和理解,同时比JavaBeans安全。