第二条:遇到多个构造器参数时考虑使用构建器

遇到需要多个参数(参数可分为必需参数和非必需参数)才能实例化一个类的对象时,一般有三种方法:

1.重叠构造器

  重叠构造器的方式可行,但是当有许多参数的时候,客户端的代码会很难编写,而且很容器出错。

  方便期间,假设这个类有五个Field需要赋值:

2.JavaBean式的类

  通过setter方法来为实例对象设置Field的值。

  但是通过javabean的方式来初始化一个实例,不是通过一条语句来完成的,会调用多个setter方法,这就会可能产生实例对象的不一致情况。

  另外,javabean式的类通过setter方法来为field赋值,而不是构造器,这样就不能将field设置为final,也就是不能将javabean式的类设计为不可变类,

  这样javabean式的类就不是线程安全的类,在使用时需要借助同步来保证线程安全。

3.使用构建器

  使用构建器则保持了javabean式类的可读性,也可以将field设置为final。

  构建器其实就是想要 实例化类的一个内部类。通过先实例化这个内部类,为这个内部类的实例的field赋值,让后内部类的实例把自己的field值赋给想要

  实例化的那个外部类。

posted @   wangliyue  阅读(121)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示