参考:http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html
策略模式遵守的几个原则:
1、依赖倒置:即依赖接口编程,而不是依赖实现
例如:Duck中的Performfly和PerformQuack方法中调用的是接口
2、优先使用组合而不是继承(因为继承大大提高了类之间的依赖性,耦合度较高)
例如:mallarduck不直接从Fly或Quack类继承,如果是直接从这些类中继承,则Fly和Quack的改变将影响
所有的子类,而使用组合的方式就可以应用Fly和Quack的多态性,如果子类发生编号不影响其它的类(MallardDuck的
Fly的变化不会印象RedHeadDuck和RubberDuck的Fly)
策略模式的应用场景
策略模式用于封装一个类的变化剧烈的行为,从而将此行为的变化对此类或此类的子类的影响排除。
例如RubberDuck的Fly可以在RubberDuck中构造一个不会飞的FlyBehavior,这样就不会影响到父类和其它的Duck子类的FlyBehavior.