定义
将可变的部分从程序中抽象分离成算法接口,在该接口下分别封装一系列算法实现,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。
功能
分离、抽象出不变的部分形成接口,将算法的实现分别封装,这样会使客户端不受算法改变而受到影响。
如:结算购物车时,付款提供商(接口)==实现==》招商银行、建设银行……等很多的付款方式。
实现
- Context: 环境类
- Strategy: 抽象策略类
- ConcreteStrategy: 具体策略类
时序图:
1、通过分离变化得出策略接口
2、为接口提供实现类
3、针对接口编程,在客户程序中 持有接口变量,并赋予相应的实现类对象
实现源代码:https://github.com/yangengzhe/coding-guide_i3geek/tree/master/docs/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F