策略模式: 环境驱使程序选择策略,策略决定程序行为。
特定环境
一个系统需要动态地在几种算法中选择一种
算法要对使用者透明时
一个类含多个逻辑流程,而实际执行时,只选择其中一种
一类问题
需要将同一流程下的多个分支逻辑,封装为对象
解决方案
策略模式,有3个角色:
: 环境类 Context, 封装策略接口引用,执行时指定采用策略,具体类实现
:策略接口 Strategy, 策略行为规范,一般由抽象类或接口实现
: 具体策略接口 ConcreteStrategy, 实现策略接口,由具体子类实现
优缺
优点:
避免继承,但复用原有代码
因为,通过继承原有类代码,扩展或修改原有逻辑,也可实现不同环境下,进入不同的逻辑流避免程序使用多重条件转移语句,使系统易于扩展
避免算法和环境类的耦合
缺点:
具体策略类过多时,增加系统维护负担,此时要考虑优化
参考
设计模式随笔系列:鸭子-策略模式(Strategy)[原], 作者: fejustin
设计模式 ( 十八 ) 策略模式Strategy(对象行为型), 作者: 真实的归宿