遇到需要多个参数(参数可分为必需参数和非必需参数)才能实例化一个类的对象时,一般有三种方法:
1.重叠构造器
重叠构造器的方式可行,但是当有许多参数的时候,客户端的代码会很难编写,而且很容器出错。
方便期间,假设这个类有五个Field需要赋值:
2.JavaBean式的类
通过setter方法来为实例对象设置Field的值。
但是通过javabean的方式来初始化一个实例,不是通过一条语句来完成的,会调用多个setter方法,这就会可能产生实例对象的不一致情况。
另外,javabean式的类通过setter方法来为field赋值,而不是构造器,这样就不能将field设置为final,也就是不能将javabean式的类设计为不可变类,
这样javabean式的类就不是线程安全的类,在使用时需要借助同步来保证线程安全。
3.使用构建器
使用构建器则保持了javabean式类的可读性,也可以将field设置为final。
构建器其实就是想要 实例化类的一个内部类。通过先实例化这个内部类,为这个内部类的实例的field赋值,让后内部类的实例把自己的field值赋给想要
实例化的那个外部类。