定义

定义一系列算法,把他们一个个封装起来,并且使他们可相互替换。本模式使得算法可独立于使用它的客户而变化。

结构

  1. 策略:策略是一个接口,该接口定义若干个算法标识,及定义了若干个抽象方法。
  2. 上下文:上下文是依赖于策略接口的类,及最终使用方法完成具体业务的类。
  3. 具体策略:具体策略是实现策略接口的类。具体策略实现策略接口所定义的抽象方法。即给出算法标识的具体算法。

举例

image.png
image.png
image.png
image.png

个人理解

策略模式是定义了一个接口,声明了这个算法要实现的方法。然后由不同的需求,去实现同名的不同算法。
最后上下文获得的具体算法类不同。就可以执行不同的需求,而不用改动上下文的代码。具体算法和上下文之间,是一种松耦合。

适合场景

image.png