【正确答案】
【答案解析】试题7是考查设计模式中的Command(命令)模式的案例分析题。Command(命令)模式的设计意图是:将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。其中一种应用场合就是抽象出待执行的动作以参数化某种对象,可用过程语言中的回调(callback)函数表达这种参数化机制。 Command模式是回调机制的一个面向对象的替代品。设计时,为了保证遥控器和家用电器之间的独立性,定义了Command类,当用户按下遥控器上的按钮时,触发Command上的On或者Off方法,因此,一对按钮分别对应一个Command对象。题目中的LightCommand以及与TVCommand分别为Command的子类,该子类用于控制实际的Light以及TV对象,将On与Off方法委托给Light以及TV实现。(1)空缺处表示要设置遥控器上按钮控制的对象,其参数传递的是某一个命令对象,因此只需将该命令对象存储下来即可。(2)空缺处表示关闭电灯,根据说明,关闭电灯的方法为turnLight(0)。(3)空缺处表示打开电视机,因此需要调用打开电视的方法。(4)空缺处表示将按钮0和相应的Command对象相关联,根据题目描述,按钮0用于控制灯或者电视,因此,应该设置灯或者电视的命令对象。
本题中应用命令模式的目的是,使类RemoteController(遥控器)和类Light、类TV之间的耦合性降至最低。