问答题
【说明】
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表10-7所示:
{{B}} 表10-7{{/B}}

为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图10-12所示:
【正确答案】
【答案解析】(1) interface
(2) interface
(3) flyBehavior
(4) quackBehavior
(5) flyBehavior.fly()
(6) quackBehavior.quack()
(7) abstract
(8) FlyNoWay()
(9) Squeak()
[分析]
FlyBehavior与QuackBehavior分别表示抽象的飞行特征,它们仅仅规定了接口,因此空(1)和(2)应该填写interface;Duck是各种鸭子种类的基类,而每一种鸭子都具有飞行特征和发声特征,这两种特征分别通过FlyBehavior和QuackBehavior来实现,因此空(3)和(4)处应该为这两个类的对象引用,Duck的飞行动作和发声动作通过abstract与其飞行特征对象和发声特征对象相关,所以,直接调用这两个类的飞行和发声动作即可。因为每一种Duck的显示特征是不相同的,因此display方法应该为抽象的方法;每一种具体的鸭子种类的飞行特征和发声特征是不同的,因此,在每一种具体鸭子类的构造函数中需要指定其具有的飞行特征和发声特征。表10-7已经指出了RubberDuck的这两种特征分别为FlyNoWay和Squeak,所以,通过构造相应类的对象来实现该特征。