抽象工厂只是一套工厂方法吗?

时间:2011-06-11 08:06:39

标签: design-patterns

抽象工厂只是一套工厂方法吗?或者这些模式之间还有其他区别吗?

3 个答案:

答案 0 :(得分:2)

根据Design Patterns,p。 95:

  

AbstractFactory类经常出现   用工厂方法实现,但是   它们也可以使用   原型。

答案 1 :(得分:1)

主要区别是恕我直言,抽象工厂是抽象,这意味着它必须被子类化才能被使用。工厂方法不能被子类化,因此您不能使用构造对象的不同实现。

如果计划提供构造对象的多个实现,则最好使用抽象工厂。此外,如果您使用单元测试,抽象工厂为您提供了更好的可测试代码,因为您可以让模拟工厂创建模拟对象进行测试。

抽象工厂通常会结合多个连贯的工厂方法。

答案 2 :(得分:0)

抽象工厂设计占用程序的一部分并封装它。

工厂方法类似地定义了用于创建对象的界面。

差异: Abstract Factory通常作为Singleton实现,它会创建一系列对象。它通常在应用程序加载时设置,之后不会更改。

另一方面,Factory Method通常不是主题组或单身人士。相反,它是一种允许灵活创建对象的实现。因此,它不一定会创建一系列对象

相似性:两者都相似,因为它们都将对象的创建与其代码分离。

这是一个不错的pdf文件。看看吧。

相关问题