战略设计模式与抽象工厂模式之间的差异是什么?

Ran*_*ber 5 design-patterns strategy-pattern abstract-factory

有人可以一劳永逸地向我解释这两者之间的区别,并尝试给出一种何时使用它们的指导方针?例子真的很棒.

Ara*_*ram 8

除了结构和实现细节之外,INTENT是不同的.一旦你掌握了INTENT具有重要意义的基本思想,那么你就会走上正确的道路.

理解意图在设计模式中的作用

意图战略.这是一种行为模式

  1. 定义一系列算法,封装每个算法,并使它们可互换.策略允许算法独立于使用它的客户端.
  2. 捕获接口中的抽象,将实现细节隐藏在派生类中.

抽象工厂的意图.这是一种创造性的模式

  1. 提供用于创建相关或从属对象族的接口,而无需指定其具体类.
  2. 封装的层次结构:许多可能的"平台",以及一套"产品"的构造.


Nat*_*hes 7

策略是没有一流功能的语言的解决方法.您传入一个策略对象,该对象决定您希望与其余代码分离的某些策略.考虑使用Java进行排序以及它们如何使用Comparators,Comparator是一个策略对象,允许您指定与排序算法分开排序的策略.这允许您通过放入不同的策略来重用代码.

Abstract Factory是一个用于创建其他对象的对象,抽象部分是您有一个工厂,它返回工厂的实现,工厂的用户通过接口访问它.因此,可以将一个工厂实现换成另一个工厂实现而不更改工厂用户,因为这些用户仅依赖于对象的接口.