⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remotecontroltest.java

📁 几个设计模式的java源码实例
💻 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 + -