虽然我知道什么是工厂设计模式。但我无法理解使用它有什么好处。为什么要使用工厂设计模式创建对象。
问问题
9864 次
4 回答
12
通过工厂创建对象,您可以避免使子系统的代码依赖于它使用的接口的特定实现——“编程到接口,而不是实现”是“设计模式”一书中最重要的一句话,工厂是将您的代码移向该出色目标的一种关键方法(依赖注入是另一个关键的 DP,经典书籍没有涵盖 - 但是,通常您注入的依赖项无论如何都是工厂,因此遗漏不会太可怕;-)。
于 2010-07-28T04:41:27.837 回答
4
工厂方法有各种优势
- 您可以避免创建重复的对象(如果您的对象是不可变的)。工厂可以为相同的参数集返回相同的对象。
- 您可以创建并返回工厂旨在创建的类型的任何子类型。在不更改客户端代码(调用代码)的情况下替换实现。
- 您每次都可以返回相同的对象(换句话说,如果获取对象的唯一方法是工厂,则为单例)。
于 2010-07-28T04:46:38.480 回答
3
于 2010-07-28T04:44:54.287 回答
1
它背后的基本思想是控制创作。
客户端调用方法
object Factory.GetObject(Spec spec)
现在,工厂是一种抽象,可以防止客户端将类构造函数硬编码/烘焙到他们的代码中。相反,他们调用工厂,工厂根据规范决定要创建的对象的正确子类。
这种方法更具可扩展性和适应变化的能力——在未来,
- 您可以向 Spec 添加一个新的调整参数并在工厂方法中处理它以返回 LatestAndGreatestSubclass
- 您可以改进现有对象并返回先前子类的 v2 或使用完全不同的实现进行交换:现有客户端和工厂方法接口不必更改。
评论太长了...所以不得不将其发布为答案。
于 2010-07-28T05:46:14.263 回答