模拟鸭子游戏
luyued 发布于 2011-03-04 20:57 浏览 N 次1. 游戏中出现各种鸭子,一边游泳戏水,一边呱呱叫
——使用标准的OO技术,设计鸭子超类Duck,并让各种鸭子继承此超类
——所有鸭子会呱呱叫Quack,会游泳Swim
——每个鸭子外观不同,display方法抽象
2. 鸭子要会飞
a) Duck类中加上fly()方法
——并非所有子类都会飞:涉及“维护”时,不能为了“复用”目的使用继承
——代码再多个子类中重复,很难知道所有鸭子的全部行为,运行时行为不容易改变,改变会牵一发动全身
b) 接口Flyable(),Quackable()取出fly和quark方法
——解决 不会再有会飞的橡皮鸭,造成 代码无法复用
c) 设计原则
1/ 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起;
2/ 针对接口编程,而不是针对实现编程;Animal a = new Dog();Dog d = new Dog();
3/ 多用组合,少用继承
i. 取出行为,建立新类FlyBehavior与QuackBehavior
——特定的具体行为编写在实现了FlyBehavior与QuakcBehavior类中
——以前:行为来自超类的具体实现,或继承某个接口并由子类自行实现
3. 整合鸭子行为
——飞行和呱呱叫的动作“委托”别人处理
——Duck类中“加入两个实例变量”,声明为接口类型,动态设置变量运行时引用正确的行为类型
4. 动态设定行为
例子:
国王king,皇后queen,骑士knight,妖怪troll都是具体的角色character,他们分别用具体的武器weapon,SwordBehavior宝剑挥舞,匕首刺杀KnifeBehavior,斧头砍杀AxeBehavior,弓箭射击BowAndArrowBehavior,进行打斗fight()
MSN空间完美搬家到新浪博客!
- 06-26· 【卓然原创】今天又是好
- 06-26· 越堕落越想飞
- 06-26· 家乐饮水机消毒液
- 06-18· [转载]玉兰之爱
- 06-18· 洛克王国逍遥呱呱怎么学
- 06-18· 2011.5.11
- 06-18· 本人想买个洛克王国少林
- 06-18· 选择隆力奇财富互联网
- 06-18· 新朋友必读 如何下载注册
- 06-18· 41 16个半月爱说话的呱呱叫
- 06-16· 第二批“中华老字号”名
- 06-13· 亲朋好友来家乐
- 06-13· 家乐
- 06-13· 去家乐
- 06-13· 大家一起同家乐寻找
- 06-13· 小姨和家乐
- 06-13· 想家乐!
- 06-13· 农家乐、稻香村和汤家乐
- 06-13· 去家樂褔
- 06-13· 麻家乐