EffectiveJava 读书笔记2020/02/17
考虑用静态工厂方法代替构造器
优点
- 相比构造器,静态工厂有名称
- 不必在每次调用的时候都创建一个新对象
- 可以返回原返回类型的任何子类型的对象
- 在创建参数化类型实例的时候,使代码变得更加简洁
缺点
- 类如果不含公有的或者受保护的构造器,就不能子类化
- 与其他的静态方法实际上没有任何区别
遇到多个构造器参数时要考虑用构造器
- 重叠构造器方式
缺点是一旦参数过多,构造方法就几何增加 - JAVABeans模式
缺点在于构造过程分到了几个调用中,构造中,JavaBean可能处于不一致的状态,导致失败。 - Builder模式
让客户端利用所有必要的参数调用构造器,得到一个builder对象,然后调用类似于setter的方法,来设置每个相关的可选参数。最后调用无惨的build方法生成不可变的对象。
用私有构造器或枚举类型强化Singleton属性
- 私有构造器,公有元素
- 静态工厂实现
但序列化时还需要额外工作 - 枚举实现
枚举方式实现,额外提供了序列化功能