创建和销毁对象(2)——遇到多个构造器参数是要考虑用构建器

来源:互联网 发布:淘宝客提现时间 编辑:程序博客网 时间:2024/06/05 19:45

【2、遇到多个构造器参数是要考虑用构建器】

静态工厂和构造器有个共同的局限性:它们都不能扩展到大量的可选参数。

大多数程序员吧,应该习惯采用重叠构造器模式,这种方式提供一个只有必要参数的构造器,第二个构造器有一个参数可选,第三个有两个参数可选,以此内推,最有一个构造器包含所有可选参数。

重叠构造器模式其实是可行的,但是当我们遇到有很多参数的场景的时候,客户端代码会非常难编写,并且很难阅读,没有可读性,必须每一行每一个参数读懂才知道所有的含义。如果一不小心传值参数顺序错了一个、两个。编译也不会出错,但是运行时会有出错的行为。

当我们遇到上述问题时(许多构造器参数的时候)。有第二种方式代替办法。即JavaBeans模式。这种模式,调用一个无参的构造器来创建对象,然后调用setter方法来设置每个必要的参数。就像hibernate实体一样给予get。set方法。这种也有一个严重的缺点,因为构造过程被分到几个调用中,所以在构造过程中,javaBeans可能处于不一致的状态,这种就需要程序员确保它的线程安全。

当然,这里还提供第三种方法,可以保证上两种的优势,避免他们的缺点。这就是Builder模式的一种形式,得到一个builder对象。然后客户端在builder对象上调用类似于setter的方法,来设置每个相关的可选的参数。

如果类的构造器或者静态工厂中具有很多个参数,设计这种类的时候,Builder模式是个不错的选中。

1 0
原创粉丝点击