静态工厂方法而不是构造函数

在阅读 Joshua Block 的《Effective Java Book》第 1 项关于使用工厂静态方法而不是构造函数之后,我一直在研究这个问题。在文本中,他尽可能地为这种使用辩护,并列举了实施SingletonFlyweight标准的可能性以及其他理由。它还引用了该类的案例Boolean,该类通过以下方法明智地使用了FlyweightvalueOf (boolean)

public static Boolean valueOf(boolean b) {
    return b ? Boolean.TRUE : Boolean.FALSE;
}

我的问题是:我了解使用这些模式的优点,但无法在构造函数本身中实现?单独使用它们并不能证明创建静态工厂方法是合理的。


墨色风雨
浏览 54回答 1
1回答

跃然一笑

但不能在构造函数本身中实现?否:new根据规范,总是创建一个新实例(或失败),因此new Boolean(b)总是返回一个新实例Boolean。Boolean.valueOf返回一个预先存在的实例。这是可取的,因为只有两个可能的值,因此没有必要创建更多值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java