命令模式将“请求”封装成对象,以便使用不同的请求,
队列 或者日志来参数化其他对象。命令模式也支持课撤销的操作。
示例:
public class Light { private String name="null"; public Light(){ } public Light(String name){ this.name=name; } public void on(){ System.out.println(name+" Light is on"); } public void off(){ System.out.println(name+" Light is off"); } }
//命令接口
public interface Command { public void execute(); }//实现一个打开点灯的命令:
public class LightOnCommand implements Command { Light light; public LightOnCommand(Light light){ this.light=light; } @Override public void execute() { light.on(); } }//使用命令对象
public class SimpleRemoteControl { Command slot; public void setCommand(Command command){ slot=command; } public void buttonWasPressed(){ slot.execute(); } }测试:
public class RemoteControlTest { public static void main(String[] args){ //创建一个遥控器对象 SimpleRemoteControl remote=new SimpleRemoteControl(); //创建一个灯对象 Light light=new Light(); //把点灯交给一个命令管理 LightOnCommand lightOn=new LightOnCommand(light); //设置遥控器命令 remote.setCommand(lightOn); //按下遥控器 remote.buttonWasPressed(); } }结果:
null Light is on