策略模式
主要是学习Head First设计模式的一些笔记和C++实现
定义
策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。相当于封装可以互换的行为,并使用委托来决定要使用哪一个。
设计原则
(1)找处应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。把会变化的部分取出并封装起来,好让其他部分不会收到影响。
(2)针对接口编程,而不是针对实现编程。
实例
例:实现鸭子的行为。
鸭子可以游泳swim(),飞行fly(),呱呱叫quack(),但是不是所有的鸭子都可以飞行和呱呱叫,因此将变化的飞行fly()和呱呱叫quack()从鸭子超类中独立出来,变成Flyable接口和Quackable接口(C++中的抽象类),可以飞行和呱呱叫的鸭子才实现这两个接口,不能飞行的鸭子则不实现Flyable接口。
C++实现详见[http://download.csdn.net/detail/bingo_tao/9072911]