策略模式

项目:开发一个鸭子游戏,使用OO技术

 

情况一:第一个版本—设计超类,超类实现了会飞和会呱呱叫,其他的鸭子继承该超类,同样拥有该行为
缺 点:依赖父类的实现,牵一发而动全身。

 

情况二:第二个版本希望扩展一些新的鸭子,但是这些鸭子中,有的不会呱呱叫,有的不会飞,那么如果只是修改父类的实现问题很大了,因为有的鸭子不会叫或者不会飞
解决方案:
    1.超类实现会飞和呱呱叫方法,特殊的子类重写覆盖这两个方法
也可以但是感觉不是很好实现方式
2.分离出会飞和呱呱叫接口,会飞和会叫的鸭子实现该接口
      缺点:代码无法复用(依赖子类的实现,每个子类里面都要写自己的实现,很多都一样)
3.分类出会飞和呱呱叫接口,实现这两个接口的类,鸭子中会动态调用对会飞和呱呱叫接口的实现类的方法——

优点
        (1)把不变和变化进行了分离
        (2)针对接口编程
        (3)用组合,少用继承

这就是策略模式:将会飞和呱呱叫的动作(可变部分),委托别人处理,而不是使用定义的超类和子类

 

posted @ 2015-10-31 11:18  Boris_Gong  阅读(116)  评论(0编辑  收藏  举报