软件工程:模拟鸭子游戏

本文讨论了如何在SimUDuck模拟鸭子游戏中实现会飞的鸭子功能。通过分析不同鸭子的行为,提出了在基类Duck中添加fly()方法的不便,以及使用接口的局限性。为了解决这些问题,文章提倡采用设计模式,分离变化和不变的部分,创建与飞行和叫声相关的一系列类,使得代码更具扩展性。文章通过UML图详细展示了设计结构。
摘要由CSDN通过智能技术生成

公司做了一套相当成功的模拟鸭子游戏:SimUDuck。游戏中会出现各种鸭子,一边游泳戏水,一边呱呱叫。此系统的内部设计使用了标准的OO技术,设计了一个鸭子超类(Superclass),并让各种鸭子继承此超类。
在这里插入图片描述
去年,公司的竞争压力加剧。主管们确定,此模拟程序需要会飞的鸭子来将竞争者抛在后头。
如何去实现????

分析:此程序需要会飞的鸭子,逐步考虑:

  1. 可以在Duck基类中加一个fly()方法,然后在子类MallardDuck、RedhradDuck中重写该方法。但是每增加一种颜色的鸭子,都需要重写fly()方法。这样子会比较麻烦。
  2. 使用接口,我们可以把fly()方法放到接口里,只有那些会飞的鸭子才需要实现这个接口。但是如果鸭子数量过多时,那么所有的鸭子都需要重复实现这个方法,而且如果我们想对fly()做一点修改,那么我们就需要修改很多很多次。
  3. 软件开发的一个不变真理是改变,不管软件设计的多好,一段时间之后,总是需要成长和改变,否则软件就会“死亡”。所以我们要设计易扩展的程序将经常要改变的代码抽离出来抽象成变量或者类来代替,不能写死。
  4. 分开变化和不会变化的部分,在这
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值