当我仔细观察战略和工厂设计模式时,它几乎看起来很相似。 我们可以使用这些模式中的任何一种来实现解决方案。 然后我想知道何时使用什么。
答案 0 :(得分:3)
Abstract Factory
设计模式用于解决以下问题:
- 系统如何独立于其对象的创建方式?
- 如何独立地改变创建对象的方式
(无需更改现有类)?
这种模式的关键思想是抽象出对象创造的过程 客户端(需要创建对象)引用抽象 (接口)并且独立于实现 (如何创建对象/实例化哪些具体类)。
何时不使用抽象工厂: 不会改变的对象创建 (当实例化的具体类永远不会改变时)。
Strategy
设计模式用于解决以下问题:
- 对象如何支持使用不同的算法
那么可以动态选择和改变使用哪种算法?
- 如何实现算法的实现方式
(无需更改现有类)?
例如,计算订单处理系统中的价格 要以不同的方式计算价格,应该是可能的 支持不同的定价算法 这样可以在运行时动态选择和更改要使用的算法。
此模式的关键思想是解耦算法 (改变)从其上下文(并将其封装在一个单独的对象中)。
有关进一步的讨论,请参阅GoF设计模式记忆以进行学习 面向对象的设计&程序设计 在http://w3sdesign.com。