📄 remotecontroltest.java
字号:
/*
* 完整实现遥控器类
* */
class Light{
String name;
public Light(String n){
name = n;
}
void lightOn(){
System.out.println(name+" 开灯");
}
void lightOff(){
System.out.println(name+" 关灯");
}
}
//通用命令接口,实现执行和撤销功能
interface Command{
public void execute();
public void undo();
}
//具体命令对象
class NoCommand implements Command{
public void execute(){
System.out.println("没有电器对应");
}
public void undo(){
System.out.println("没有电器对应");
}
}
class LightOnCommand implements Command{
Light light;
LightOnCommand(Light l){
this.light = l;
}
public void execute(){
light.lightOn();
}
public void undo(){
light.lightOff();
}
}
class LightOffCommand implements Command{
Light light;
LightOffCommand(Light l){
this.light = l;
}
public void execute(){
light.lightOff();
}
public void undo(){
light.lightOn();
}
}
class RemoteControl{
int controlNum;
Command[] onCommands;
Command[] offCommands;
Command undoCommand; //记录上一个命令
public RemoteControl(){
controlNum = 7;
onCommands = new Command[controlNum];
offCommands = new Command[controlNum];
Command noCommand = new NoCommand();
for(int i=0; i<controlNum; i++){ //如果遥控器暂时没有对应电器,则使用默认命令
onCommands[i] = noCommand;
offCommands[i] = noCommand;
}
undoCommand =noCommand;
}
public void setCommand(int solt, Command onCommand, Command offCommand){
onCommands[solt] = onCommand;
offCommands[solt] = offCommand;
}
public void onButtonPressed(int solt){
onCommands[solt].execute();
undoCommand = onCommands[solt];
}
public void offButtonPressed(int solt){
offCommands[solt].execute();
undoCommand = offCommands[solt];
}
public void undoButtonPressed(){
undoCommand.undo();
}
}
public class RemoteControlTest {
public static void main(String[] args){
RemoteControl control = new RemoteControl();
Light lobbyLight = new Light("lobby");
LightOnCommand lobbyLightOn = new LightOnCommand(lobbyLight);
LightOffCommand lobbyLightOff = new LightOffCommand(lobbyLight);
Light kitchenLight = new Light("kitchen");
LightOnCommand kitchenLightOn = new LightOnCommand(kitchenLight);
LightOffCommand kitchenLightOff = new LightOffCommand(kitchenLight);
control.setCommand(0,lobbyLightOn, lobbyLightOff);
control.setCommand(1,kitchenLightOn, kitchenLightOff);
control.onButtonPressed(0);
control.offButtonPressed(0);
control.undoButtonPressed();
control.onButtonPressed(1);
control.offButtonPressed(1);
control.offButtonPressed(2);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -