5.某灯具厂商欲生产一个灯具遥控器,该遥控器具有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);
}
}