13

可能的重复:
工厂模式。什么时候使用工厂方法?
为什么存在静态 Create 方法?

虽然我知道什么是工厂设计模式。但我无法理解使用它有什么好处。为什么要使用工厂设计模式创建对象。

4

4 回答 4

12

通过工厂创建对象,您可以避免使子系统的代码依赖于它使用的接口的特定实现——“编程到接口,而不是实现”是“设计模式”一书中最重要的一句话,工厂是将您的代码移向该出色目标的一种关键方法(依赖注入是另一个关键的 DP,经典书籍没有涵盖 - 但是,通常您注入的依赖项无论如何都是工厂,因此遗漏不会太可怕;-)。

于 2010-07-28T04:41:27.837 回答
4

工厂方法有各种优势

  1. 您可以避免创建重复的对象(如果您的对象是不可变的)。工厂可以为相同的参数集返回相同的对象。
  2. 您可以创建并返回工厂旨在创建的类型的任何子类型。在不更改客户端代码(调用代码)的情况下替换实现。
  3. 您每次都可以返回相同的对象(换句话说,如果获取对象的唯一方法是工厂,则为单例)。
于 2010-07-28T04:46:38.480 回答
3

1-易于实施。

2-客户端应用程序代码不必大幅更改。

3-Class 创建是从客户端代码中抽象出来的。

您还可以检查此线程 工厂模式。什么时候使用工厂方法?

于 2010-07-28T04:44:54.287 回答
1

它背后的基本思想是控制创作

客户端调用方法
object Factory.GetObject(Spec spec)

现在,工厂是一种抽象,可以防止客户端将类构造函数硬编码/烘焙到他们的代码中。相反,他们调用工厂,工厂根据规范决定要创建的对象的正确子类。

这种方法更具可扩展性和适应变化的能力——在未来,

  • 您可以向 Spec 添加一个新的调整参数并在工厂方法中处理它以返回 LatestAndGreatestSubclass
  • 您可以改进现有对象并返回先前子类的 v2 或使用完全不同的实现进行交换:现有客户端和工厂方法接口不必更改。

评论太长了...所以不得不将其发布为答案。

于 2010-07-28T05:46:14.263 回答