我应该总是使用静态工厂方法而不是构造函数吗?

时间:2012-03-16 05:48:05

标签: java oop

阅读Effective Java,使用静态工厂方法似乎有许多优点,而且缺点很少。通过静态工厂方法,我具体指的是以下

public class MyClass {    
  private MyClass() { ... };  

  public static MyClass getInstance() {
    return new A();
  }    
}

来自Effective Java:

  

请注意,静态工厂方法与“设计模式”中的“工厂方法”模式不同[Gamma95,p。 107]。此项中描述的静态工厂方法在设计模式中没有直接的等效方法。

现在最好是始终遵循这种做法,还是仅限于此?

如果是的话?

这样做是否有点过分?

2 个答案:

答案 0 :(得分:5)

通常,构造函数比工厂更简单,因此这是选择构造函数而不是工厂的主要原因。在情况需要时使用工厂,没有“默认情况下”。你应该做最简单的事情来解决你的问题,而且大部分时间都是构造函数。

答案 1 :(得分:2)

工厂方法使用对象从代码中抽象出对象的创建和配置

如果所有这些都取决于对象的创建和初始化所涉及的复杂性。如果它们很简单则无需使用工厂模式。

如果它有点复杂(在使用它之前涉及很多初始化步骤)并且最好使用工厂模式。