标签:
项目:开发一个鸭子游戏,使用OO技术
情况一:第一个版本—设计超类,超类实现了会飞和会呱呱叫,其他的鸭子继承该超类,同样拥有该行为
缺 点:依赖父类的实现,牵一发而动全身。
情况二:第二个版本希望扩展一些新的鸭子,但是这些鸭子中,有的不会呱呱叫,有的不会飞,那么如果只是修改父类的实现问题很大了,因为有的鸭子不会叫或者不会飞 解决方案: 1.超类实现会飞和呱呱叫方法,特殊的子类重写覆盖这两个方法
也可以但是感觉不是很好实现方式 2.分离出会飞和呱呱叫接口,会飞和会叫的鸭子实现该接口
缺点:代码无法复用(依赖子类的实现,每个子类里面都要写自己的实现,很多都一样) 3.分类出会飞和呱呱叫接口,实现这两个接口的类,鸭子中会动态调用对会飞和呱呱叫接口的实现类的方法——
优点:
(1)把不变和变化进行了分离
(2)针对接口编程
(3)用组合,少用继承
这就是策略模式:将会飞和呱呱叫的动作(可变部分),委托别人处理,而不是使用定义的超类和子类
标签:
原文地址:http://www.cnblogs.com/gongOnTheWay/p/4885868.html