策略模式:它定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
例:如何去设计一个Duck类,以及多样的继承与Duck类的子类呢?Duck有以下行为:swim(),fly(),display(),quack()。
1.首先思考一下,如果按照自己以往的习惯会怎么去设计呢?
定义一个Duck类,然后里面定义上述三个方法,所有继承与Duck类的子类都会包含这三个方法,我们可以去重写这三个方法,使子类可以拥有自己的变化。那么问题来了,假如,我有一只橡皮鸭,我不应该让它有飞的行为,我该怎么办呢?
2.利用重写呢?
那么是不是,每出现一个新的子类的时候,我们就要手动的