阅读有效的Java,看起来使用静态工厂方法有很多优点,而且缺点很少。通过静态工厂方法我特指下列我应该总是使用静态工厂方法而不是构造函数吗?
public class MyClass {
private MyClass() { ... };
public static MyClass getInstance() {
return new A();
}
}
从有效的Java:
注意,静态工厂方法是不一样的,从设计模式[Gamma95,第Factory Method模式。 107]。这个项目中描述的静态工厂方法在设计模式中没有直接的等价物。
现在是最好总是遵循这种做法,或只有时?
如果是这样的话?
是否曾经矫枉过正呢?
当它过度杀伤时它过度杀伤。只有你可以判断。一般来说,我会提醒你不要盲目追求*任何*收到的智慧。你通常会发现原始声明被对冲的所有原始资格被遗忘,只有规则依然存在,通常没有人真正知道为什么。 – EJP 2012-03-16 05:51:35
在这种情况下,我们很幸运,因为原始文本在有效Java项目1中保留了其所有的荣耀。但我不确定我对此的解释是否正确。 – cendrillon 2012-03-16 06:08:31
我会说它通常是过度杀伤,除非你有一个特定的原因想要隐藏正在创建的实际类型,这基本上是当你想使用工厂模式。我认为在大多数情况下并非如此。例如,如果你不能构造一个字符串或一个线程,考虑一下生活会是什么样子。 – EJP 2012-03-16 06:10:33