在阅读 Joshua Block 的《Effective Java Book》第 1 项关于使用工厂静态方法而不是构造函数之后,我一直在研究这个问题。在文本中,他尽可能地为这种使用辩护,并列举了实施Singleton或Flyweight标准的可能性以及其他理由。它还引用了该类的案例Boolean,该类通过以下方法明智地使用了FlyweightvalueOf (boolean):public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}我的问题是:我了解使用这些模式的优点,但无法在构造函数本身中实现?单独使用它们并不能证明创建静态工厂方法是合理的。
1 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
但不能在构造函数本身中实现?
否:new
根据规范,总是创建一个新实例(或失败),因此new Boolean(b)
总是返回一个新实例Boolean
。
Boolean.valueOf
返回一个预先存在的实例。这是可取的,因为只有两个可能的值,因此没有必要创建更多值。
添加回答
举报
0/150
提交
取消