用途

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换,从而一个类的行为或其算法可以在运行时更改。

要素

  • Strategy:算法的公共接口。
  • ConcreteStrategy:算法的具体实现。
  • Context:维护一个Strategy对象引用,含有一个setter和一个doOperation方法。
  • 示例图:

Xnip2019-09-11_07-19-08.jpg

优缺点

  • 自由切换算法,避免多重条件判断
  • 客户端需要了解所有算法