Osc*_*ros 12 design-patterns strategy-pattern chain-of-responsibility
我提出这个问题是因为几天前我在这里提出的另一个问题.
我必须解决一个特定的问题,在得到两个回复后,我意识到两个模式可以帮助解决这个问题(以及任何其他类似问题).
我的问题是:
这些模式之间究竟有什么区别?
Kon*_*rus 27
他们非常不同.
策略是关于具有通用接口,可用于提供算法的不同实现,或具有一些共同依赖性的若干算法或逻辑片段.
例如,您CollectionSorter可以支持SortingStrategy(合并排序,快速排序,冒泡排序).它们都具有相同的界面和目的,但可以做不同的事情.
在某些情况下,您可能决定在内部确定策略.也许分拣机有一些基于收集大小等的启发式方法.大多数时候它确实是从外部注入的.这是模式真正发挥作用的时候:它为用户提供了覆盖(或提供)行为的能力.
这种模式是现在无所不在的控制反转的基础.研究下一次完成经典模式后.
责任链是关于拥有一系列对象,这些对象通常从更详细到更通用.链中的每个部分都可以提供答案,但它们具有不同的细节层次.
流行的GOF示例是上下文帮助系统.当您单击桌面应用程序中的某个组件时,哪些有助于显示?链中的第一项可以为您单击的组件寻找帮助.链接中的下一个可以尝试显示整个包含对话框的帮助.接下来是应用程序模块......等等.
看起来你没有,但应该阅读GOF"设计模式"的经典之作.