您的位置:首页 > 食品饮料 > 调味品 > 模拟鸭子游戏

模拟鸭子游戏

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空间完美搬家到新浪博客!

图文资讯
广告赞助商