①构造器和静态工厂方法有个共同的局限性:不能很好的扩展到大量的可选参数。
②JavaBeans模式
JavaBeans模式自身有个严重的缺点。因为构建过程被分到了几个调用中,在构建过程中JavaBean可能处于不一致的状态。类无法仅仅通过验证构造器参数的有效性来保持一致性。试图使用处于不一致状态的对象,将会导致失败。与此相关的另一点不足在于,JavaBeans模式组织了把类做成不可变的可能,这就需要程序员付出额外的努力来确保他的线程安全。
个人理解:有些对象从创建到销毁需要保持一致性,但是JavaBean对象不符合这点需求。不可变对象的构造过程是通过构造器完成,而JavaBean对象的构造过程则先是通过创建对象,随后在通过setter方法来设置必要的参数。直到销毁前,JavaBean对象都是可变的,或者说JavaBean一直在构造过程中。在需要一致性对象的程序使用JavaBean对象,理所当然会可能导致失败。
当程序允许或需要可变对象时,对于多个构造器参数时,采用JavaBeans模式也是允许的。
网友评论