思想: 将某个行为抽离成行为策略接口 其实现类表示此行为有多种策略方式, 再将行为策略接口组合到具体角色, 使得每个角色有自己的独特行为;
- 鸭子案例
- 野鸭, 饲养鸭, 玩具鸭;
- 每个品种的鸭子对游泳这个行为有不同的表现;
- 野鸭游泳很厉害, 饲养鸭游泳一般, 玩具鸭不能自己游泳;
- 未使用策略模式
- 继承鸭子后, 子类鸭子都能获得其鸭子的行为, 而饲养鸭和玩具鸭不能具备飞行功能, 因此还要重写(违背了里氏替换原则);
- 使用策略模式
![]()
- Java中用到的地方
- Arrays.sort排序(data, comparator)
- 实际使用
- JOB每天对数仓文件进行入库操作 (策略+模版方法)
![]()
把每个数仓文件分成策略