Strategy模式的主要思想(意图):
定义一系列的算法, 把它们一个个封装起来, 并且使他们可以相互替换. Strategy模式使算法可独立于使用它的客户而变化.

案例 : 某国际电商在对不同地区的缴税计算. 在不同地区缴税功能的实现时, 对不同地区缴税的算法是相同的, 而不同地区的税率是不同的. 尝试 “考虑设计中什么应该是可变的 什么是不变的” , “对变化的概念进行封装” 并且最重要的是我们应采用 “优先使用对象聚集, 而不是类继承”.

Strategy模式的适用条件:

  • 对象都具有职责
  • 这些职责不同的具体实现是通过多态的使用完成的.
  • 概念上相同的算法具有多个不同的实现, 需要进行管理.

Strategy模式将对算法的选择和算法的实现相分离. 允许根据上下文进行选择.
对于目前的变化和未来可能出现的任何情况, 这种方法都行之有效. 这种 “将算法封装在一个抽象类中, 而且在某一时刻可以互换的使用其中之一” 的方法, 本质上就是Strategy模式.

更多推荐

Strategy模式简述