Head First 设计模式之策略设计模式

假设有一个鸭子超类,各种不同的鸭子要具有叫和游泳得动作。如果我们把鸭子的叫和游泳的动作放入进鸭子超类中,这样鸭子子类就可以继承过来这些方法,如果有一天有一只鸭子变异会飞了。那么这个鸭子就要自己去实现这个飞行的方法因为超类中没有该方法,慢慢的随着时间的推移,有很多鸭子都会飞了。那么问题来了,我们需要书写很多硬式代码。

这时候就引申出策略设计模式
针对上面的问题我们要怎么解决呢。我们可以把鸭子的动作行为单拿出来,封装成一个算法类。独立于超类之外的。

Head First 设计模式之策略设计模式

设计原则:多组合少继承

在这里鸭子的行为不是继承超类得到的,而是和适当的行为对象组合而来的。

什么是策略设计模式(Strategy Pattern)
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

优点:
    1、可以动态的改变对象的行为
缺点:
    1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类
    2、策略模式将造成产生很多策略类