工厂模式和策略模式之间有什么区别?

任何人都可以解释工厂模式和策略模式之间的区别吗?

对我来说,除了一个额外的工厂类(在工厂模式中创建产品对象)之外,两者看起来都是一样的。


答案 1

工厂模式是一种创建模式。战略模式是一种操作模式。换句话说,工厂模式用于创建特定类型的对象。策略模式用于以特定方式执行一个操作(或一组操作)。在经典的例子中,工厂可能会创建不同类型的动物:狗,猫,老虎,而策略模式将执行特定的操作,例如,移动;使用“奔跑”、“行走”或“洛佩”策略。

事实上,这两者可以一起使用。例如,您可能有一个创建业务对象的工厂。它可能会根据持久性介质使用不同的策略。如果您的数据以XML格式本地存储,它将使用一种策略。如果数据位于其他数据库中的远程数据库,它将使用另一个数据库。


答案 2

策略模式允许您以多态方式更改类的行为。

工厂模式允许您封装对象创建。

加里提出了一个很好的观点。如果你使用编码到抽象而不是“具体化”的原则,那么很多模式开始看起来像一个主题的变体。


推荐