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

Mal*_*tty 5 design-patterns

当我仔细观察策略和工厂设计模式时,其外观几乎相似。我们可以使用任何一种模式来实现解决方案。然后我想知道什么时候使用什么。

GFr*_*nke 5

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

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

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

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

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

此模式的关键思想是将算法(发生变化)与其上下文分离(并将其封装在单独的对象中)。

如需进一步讨论,请参阅用于学习面向对象设计和编程的 GoF 设计模式记忆,网址为:http://w3sdesign.com