某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式的类图如图6-1所示。

【Java代码】
class Light{
public Light( ){}
public Light(String name){/*代码省略*/}
public void on( ){/*代码省略*/}//开灯
public void off( ){/*代码省略*/}//关灯
//其余代码省略
}
(1){
public void execute( );
}
class LightOnCommand implements Command{//开灯命令
Light light;
public LightOnCommand(Light light){this.light=light;}
public void execute( ){(2);}
}
class LightOffCommand implements Command{//关灯命令
Light light;
public LightOffCommand(Light light){this.light=light;}
public void execute( ){(3);}
}
class RemoteControl{//遥控器
Command[]onCommands=new Command[7];
Command[]offCommands=new Command[7];
public RemoteControl( ){/*代码省略*/}
public void setCommand(int slot,Command onCommand,Command offCommand){
(4)=onCommand;
(5)=offCommand;
}
public void onButtonWasPushed(int slot){
(6);
}
public void offlButtonWasPushed(int slot){
(7);
}
}
class RemoteLoader{
public static void main(String[]args){
RemoteControl remoteControl=new RemoteControl( );
Light livingRoomLight=new Light("Living Room");
Light kitchenLight=new Light("kitchen");
LightOnCommand livingRoomLightOn=new LightOnCommand(livingRoomLight);
LightOffCommand livingRoomLightOff=new LightOffCommand(livingRoomLight);
LightOnCommand kitchenLightOn=new LightOnCommand(kitchenLight);
LightOffCommand kitchenLightOff=new LightOffCommand(kitchenLight);
remoteControl.setCommand(0,livingRoomLightOn,livingRoomLightOff);
remoteControl.setCommand(1,kitchenLightOn,kitchenLightOff);
remoteControl.onButtonWasPushed(0);
remoteControl.offButtonWasPushed(0);
remoteControl.onButtonWasPushed(1);
remoteControl.offButtonWasPushed(1);
}
}
正确答案及解析
正确答案
解析
(1)interface Command
(2)light.on()
(3)light.off()
(4)onCommands[slot]
(5)offCommands[slot]
(6)onCommands[slot].execute()
(7)offCommands[slot].execute()
本题考察设计模式的实现,难度较小。根据类图和已有代码可写出空缺的代码.
(1)是Command接口的实现,应该填写interface Command;
(2)和(3)定义了开灯、关灯action,因此,分别填写(2)light->on()(3)light->off();
(4)(5)分别设置“开灯”命令对象、“关灯”命令对象,因此分别填写(4)onCommands[slot](5)offCommands[slot];
(6)(7)分别完成对开灯、关灯命令对象的execute方法的调用,因此分别填写(6)onCommands[slot].execute()
(7)offCommands[slot].execute()。
包含此试题的试卷
你可能感兴趣的试题

-
- A.某非周期信号的幅值频谱
- B.某周期信号的幅值频谱
- C.某非周期信号的频谱
- D.某周期信号的频谱
- 查看答案

-
- A.010110和22
- B.011010和26
- C.11010和26
- D.10110和22
- 查看答案

-
- A.F=XY+y
- B.F=y
- C.F=XY+YZ+1,
- D.<img src='http://tp.mxqe.com/data/746/13587812_0_1.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
- 查看答案

-
- A.<img src='http://tp.mxqe.com/data/746/13587811_0_1.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
- B.<img src='http://tp.mxqe.com/data/746/13587811_0_2.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
- C.<img src='http://tp.mxqe.com/data/746/13587811_0_3.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
- D.<img src='http://tp.mxqe.com/data/746/13587811_0_4.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
- 查看答案

-
- A.<img src='http://tp.mxqe.com/data/746/13587810_0_1.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
- B.<img src='http://tp.mxqe.com/data/746/13587810_0_2.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
- C.<img src='http://tp.mxqe.com/data/746/13587810_0_3.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
- D.<img src='http://tp.mxqe.com/data/746/13587810_0_4.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
- 查看答案