抽象工厂

时间:2014-12-13 22:42:49

标签: java design-patterns

我正在读一本名为Head First Design Patterns的书。我对抽象工厂模式感到困惑。据说,Abstract Factory提供了一个接口,用于创建相关或依赖对象的族,而无需指定其具体类。这也是与Factory Method不同的一点。作者给出了NYPizzaIngredientFactory的一个例子,它是一个具体的子类,可以通过调用类中的一些方法来创建一系列产品(例如createDough(),createSauce() )。然而,我认为,为了创造一个特殊的酱汁,该课程必须依赖于具体的课程,如PlumTomato酱或Marirana酱。这意味着Abstract Factory必须为这些对象指定具体的类。我认为对吗?请帮忙。谢谢!

1 个答案:

答案 0 :(得分:2)

嗯,抽象工厂本身不必指定任何具体的类,因为它是抽象的 - 它没有实现代码。

抽象工厂的实现当然是这样做的。但是:

  • 他们不必告诉工厂用户他们将要做什么,工厂的用户也不必关心他们将要做什么。如果您要求Sauce,那么您可以保证收到可以用作Sauce的内容。
  • 由于前者,工厂实现生成的实际具体类是实现细节,无需更改使用代码即可更改。
  • 创建工厂的代码不是使用工厂的(唯一)代码。因此,工厂实施的选择本身就是一个独立的问题。