为什么要使用工厂方法来创建对象

时间:2010-07-28 04:35:42

标签: c# .net design-patterns uml factory-pattern

  

可能重复:
  Factory Pattern. When to use factory methods?
  Why do static Create methods exist?

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

4 个答案:

答案 0 :(得分:11)

通过工厂创建对象,可以避免使子系统的代码依赖于它所使用的接口的特定实现 - “接口编程而不是实现”是“设计模式”一书中最重要的单个短语和工厂是将代码转移到这个优秀目标的关键方法(依赖注入是另一个关键的DP,经典书籍没有涵盖 - 但是,通常你注入的依赖关系 无论如何工厂,所以遗漏并不太可怕; - )。

答案 1 :(得分:4)

您可以使用工厂方法

获得各种优势
  1. 您可以避免创建重复的对象(如果您的对象是不可变的)。工厂可以为同一组参数返回相同的对象。
  2. 您可以创建并返回工厂设计用于创建的任何类型的子类型。在不更改客户端代码的情况下替换实现(调用代码)。
  3. 每次都可以返回相同的对象(换句话说,如果获取对象的唯一方法是工厂,则为单例)。

答案 2 :(得分:3)

1 - 易于实施。

2客户端应用程序代码不必彻底改变。

从客户端代码中抽象出3类创建。

您也可以查看此帖子 Factory Pattern. When to use factory methods?

答案 3 :(得分:1)

背后的基本理念是控制创作

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

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

这种方法更具可扩展性和适应性更强 - 将来,

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

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