2

Factory Method此页面描述了和之间的一个重要区别Abstract Factory

http://architects.dzone.com/articles/factory-method-vs-abstract

根据这个页面,区别在于Factory Method模式中的Creator(即创建新对象的实体)和Client(即使用 的实体Creator)是同一个类。更准确地说,这个模式只定义了一个方法,所以类的其余部分是Client. 然而Abstract Factory, theCreator和 theClient单独的类。的Creator唯一目的是创建对象所以只有一个单独的类可以Client

这种区分正确吗?如果是这样,为什么不能将其中的Creator方法Factory Method放在单独的类中?它会产生任何问题吗?Creator同样,为什么 中的类不能与中的类Abstract Factory相同Client?这会产生任何问题吗?

4

1 回答 1

1

如果正确使用抽象工厂模式,客户端只知道抽象工厂基类,不知道具体实现。因此,客户端也不能是创建者,因为这会将客户端和创建代码耦合在一起,这正是抽象工厂模式旨在防止的。

通常描述工厂方法模式的方式,实际上并没有一个类扮演创建者的角色。唯一的“创建”代码在工厂方法本身中。如果包含工厂方法的类只是将创建的对象传递给客户端并确实扮演“创建者”的角色,那么您所拥有的是抽象工厂模式(尽管只有一个产品系列的特殊情况)。您会注意到抽象工厂模式通常使用工厂方法来实现。

于 2014-11-15T22:10:04.380 回答