使用工厂而不是构造函数来创建对象的阈值是多少?

Sta*_*low 11 design-patterns domain-driven-design factory

使用工厂而不是构造函数来创建对象的阈值是多少?

  1. 你总是使用工厂.
  2. 只有在除了检查空值之外还有不变检查时才使用工厂.
  3. 你总是使用构造函数
  4. 你很少使用工厂......这些案件是什么?

利弊

更新:我在我的项目中应用Domain Driven Design的工厂模式.创建工厂背后的原因之一是减少域模型中的噪声.

谢谢

Igo*_*Oks 13

如果我有一个抽象基类(或接口),以及几个具体的派生类,我使用工厂,并且根据哪个具体类创建了一些逻辑.我在工厂实现了这个逻辑.

  • 工厂的要点是将对象创建与客户端分开,因此,具体类与工厂模式中的抽象类之间的比例为1:1没有任何问题. (3认同)

Edd*_*die 5

工厂最明显的情况是在运行时选择实现接口的特定类,例如,从配置文件中选择.我没有大量使用工厂,但是当我想要两个对象高度分离时,我更有可能使用工厂来获取另一个的实例.


Rob*_*Rob 1

我喜欢将构造函数的数量保持在合理的低水平;超过两三个,我质疑该物体的结构设计得如何。

如果引入额外的构造函数来支持设置各种可选属性,我喜欢使用 Builder ,如《 Effective Java》(Joshua Bloch,第二版)中所述。