设计模式(1)--策略者模式
转载文章地址: https://www.jianshu.com/p/3bcf55cf83d3 一、业务场景: 1、有一个鸟类,鸟有共同的属性,比如飞和叫,不同的叫声,可以通过子类重写父类的方法进行,当业务扩展,鸟还有进食的属性, 但是不同的鸟类,吃的东西不一样,就比如有的类中,不需要此方法,该怎么解决呢?a.子类重写父类方法,但是当有多个类实现时, 修改比较麻烦,b.定义吃的统一接口,不同的吃的食物方式实现吃的统一接口,当不同种类的鸟进食时,调用不同的实现类,实现不同 类的鸟进行不同吃的方式; 2、当一个旧的类,需要在主类中添加一个方法,所有的子类继承之后,都会调用这个方法,但是并不是所有的子类都需要实现这个方法,这时候就需要想新的办法了: 1 )、在每个子类中去重写这个新方法 --- 》太麻烦,而且代码复用性不高, 2 )、定义有一个行为( interface ),行为的具体实现方式不一样,列入鸭子叫: Gaga 叫、 gugu 叫,子类实现的具体行为不一样,则最终表达的方式就不一样 二、类图 三、实现通用代码: class Client { public static void main(String[] args) { //选择一个具体策略 IStrategy strategy = new ConcreteStrategyA();