繁体   English   中英

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

[英]Should I always use static factory methods instead of constructors?

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

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

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

来自Effective Java:

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

现在最好总是遵循这种做法,或者只是有时候?

如果是这样的话?

这样做是否有点矫枉过正?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM