思想: 将某个行为抽离成行为策略接口, 其实现类表示此行为有多种策略方式;
- 鸭子案例
- 野鸭, 饲养鸭, 玩具鸭;
- 每个品种的鸭子对游泳这个行为有不同的表现;
- 野鸭游泳很厉害, 饲养鸭游泳一般, 玩具鸭不能自己游泳;
- 未使用策略模式
- 继承鸭子后, 子类鸭子都能获得其鸭子的行为, 而饲养鸭和玩具鸭不能具备飞行功能, 因此还要重写(违背了里氏替换原则);
- 使用策略模式
![]()
![]()
- Java中用到的地方
- Arrays.sort排序(data, comparator)
![]()
思想: 将某个行为抽离成行为策略接口, 其实现类表示此行为有多种策略方式;
- 鸭子案例
- 野鸭, 饲养鸭, 玩具鸭;
- 每个品种的鸭子对游泳这个行为有不同的表现;
- 野鸭游泳很厉害, 饲养鸭游泳一般, 玩具鸭不能自己游泳;
- 未使用策略模式
- 继承鸭子后, 子类鸭子都能获得其鸭子的行为, 而饲养鸭和玩具鸭不能具备飞行功能, 因此还要重写(违背了里氏替换原则);
- 使用策略模式
![]()
![]()
- Java中用到的地方
- Arrays.sort排序(data, comparator)
![]()
相关文章: