2015-02-06 60 views
2

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

+0

[提问]的复制(http://stackoverflow.com/questions/616796/what-is-the-difference-between-factory-and-strategy-patterns) – ialekseev 2015-02-06 11:23:52

+0

感谢您的帮助 – 2015-02-06 11:26:16

回答

2

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

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

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

Strategy设计模式是用来解决问题等:
- 对象支撑如何使用不同的算法
使得其中要使用的算法可以被选择并且动态地改变?
- 算法实现的方式如何独立更改
(无需更改现有类)?

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

这种模式的主要思想是从其上下文(并将其封装在单独的对象中)中分离算法 (即更改)。

如需进一步讨论,请参阅学习 面向对象设计&在http://w3sdesign.com编程 GoF的设计模式记忆。

+0

谢谢你的回答澄清! – OPV 2017-09-25 14:34:39

相关问题