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

6

我仔细观察策略模式和工厂模式,它们看起来几乎相似。 我们可以使用其中任何一种模式来解决问题。 然后我想知道该在何时使用哪种模式。


重复的问题链接 - alekseevi15
感谢您的帮助。 - Mallikarjuna Sangisetty
1个回答

5
抽象工厂设计模式用于解决以下问题:
- 如何使系统独立于对象的创建方式?
- 如何在不更改现有类的情况下独立地更改对象的创建方式
(即如何更改对象的创建方式而不更改现有类)?

该模式的关键思想是抽象化对象创建过程。
需要创建对象的客户端引用一个抽象接口, 并且不依赖于具体实现 (对象的创建方式/实例化哪些具体类)。

不适合使用抽象工厂的情况: 对象创建不会发生变化 (当实例化的具体类永远不会发生变化时)。

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

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

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

有关详细讨论,请参见GoF设计模式记忆学习 面向对象设计和编程 在http://w3sdesign.com


感谢您澄清答案! - OPV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接