
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
遇到多个构造器参数时要考虑用构建器
静态工厂和构造器有一个共同的局限性:它们都不能很好地扩展到大量的可选参数.
重载多个构造器方法可行,但是当有许多参数的时候,代码会很难写难读.
第二种替代方法是JavaBeans模式,即一个无参数构造来创建对象,然后调用setter方法来设置每个参数.这种模式也有严重的缺点,因为构造过程被分到了几个调用中,在构造过程中JavaBean可能处于不一致的状态.
类无法通过检验构造器参数的有效性来保证一致性.另一点是这种模式阻止了把类做成不可变的可能.
第三种方法就是Builder模式.不直接生成想要的对象,而是利用必要参数调用构造器(或者静态工厂)得到一个builder对象,然后在builder对象上调用类似setter的方法,来设置可选参数,最后调用无参的build()方法来生成不可变的对象.
这个Builder是它构建的类的静态成员类.
Builder的setter方法返回Builder本身,可以链式操作.
Builder模式的优势:可读性增强;可以有多个可变参数;易于做参数检查和构造约束检查;比JavaBeans更加安全;灵活性:可以利用单个builder构建多个对象,可以自动填充某些域,比如自增序列号.
Builder模式的不足:为了创建对象必须先创建Builder,在某些十分注重性能的情况下,可能就成了问题; Builder模式较冗长,因此只有参数很多时才使用.
了解详情请登陆昆明达内IT培训官网(km.tedu.cn)!