策略模式
策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略。本模式使得算法可独立于使用它的用户而变化
书中的例子
将鸭子类中经常发生变化的飞行行为和喊叫行为单独封装成一个接口,不同鸭子的行为会实现该接口。
不同的鸭子和抽象类鸭子(Duck)是继承 IS A关系
飞行行为和喊叫行为跟鸭子(Duck)是HAS A的关系
具体的飞行行为对行为接口的实现,是实现的关系
策略模式所涉及到的设计原则
- 封装变化。识别应用中变化的方面,把它们和不变的方面分开。
- 针对接口编程,而不是针对实现编程。
- 优先使用组合而不是继承。
策略模式的优缺点
优点
-
策略模式提供了对“开闭原则”的完美支持,用户可以在不 修改原有系统的基础上选择算法或行为,也可以灵活地增加 新的算法或行为。
-
策略模式提供了管理相关的算法族的办法。
-
策略模式提供了可以替换继承关系的办法。
-
使用策略模式可以避免使用多重条件转移语句。
缺点
- 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
- 策略模式将造成产生很多策略类,可以通过使用享元模式在一 定程度上减少对象的数量。
参考:策略模式