第一章:设计模式:策略模式(一)

场景

做一套模拟鸭子的游戏。游戏中会出现各种鸭子,一边游泳一边咕咕叫。此系统内部设计应用了标准的的OO技术,设计了一个鸭子的超类,并让鸭子继承此超类。

需求增加了需要会飞的鸭子来将竞争者抛在后头。这时候的设计是


但是,可怕的事情发生了。。。

并非所有的鸭子都会飞,某些鸭子并不适合该行为,比如添加了一个橡皮鸭的种类就无法飞行。

对代码所做的局部修改,影响层面可不仅仅是局部。

此时一般程序员的想法是在橡皮鸭子类中重写父类的fly()方法,就好像覆盖quack()做法一样,可是再加上一个鸭子的种类既不会飞又不会叫。

这样出现的缺点是:

1.代码在多个子类中重复。

2.运行时的行为不容易改变。

3.很难知道所有鸭子的全部行为。

4.改变会牵一发动全身,造成其他鸭子不想要的改变。

显然这样的设计是不利于扩展的设计。那么该如何设计?请看下一节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值