策略和工厂设计模式有什么区别?

时间:2015-02-06 10:47:23

标签: design-patterns

当我仔细观察战略和工厂设计模式时,它几乎看起来很相似。 我们可以使用这些模式中的任何一种来实现解决方案。 然后我想知道何时使用什么。

1 个答案:

答案 0 :(得分:3)

Abstract Factory设计模式用于解决以下问题:
- 系统如何独立于其对象的创建方式? - 如何独立地改变创建对象的方式
(无需更改现有类)?

这种模式的关键思想是抽象出对象创造的过程 客户端(需要创建对象)引用抽象 (接口)并且独立于实现 (如何创建对象/实例化哪些具体类)。

何时不使用抽象工厂: 不会改变的对象创建 (当实例化的具体类永远不会改变时)。

Strategy设计模式用于解决以下问题:
- 对象如何支持使用不同的算法
那么可以动态选择和改变使用哪种算法? - 如何实现算法的实现方式 (无需更改现有类)?

例如,计算订单处理系统中的价格 要以不同的方式计算价格,应该是可能的 支持不同的定价算法 这样可以在运行时动态选择和更改要使用的算法。

此模式的关键思想是解耦算法 (改变)从其上下文(并将其封装在一个单独的对象中)。

有关进一步的讨论,请参阅GoF设计模式记忆以进行学习 面向对象的设计&程序设计 在http://w3sdesign.com