命令模式

来源:互联网 发布:tensorflow anaconda 编辑:程序博客网 时间:2024/06/03 14:47

package F_Command.a;

/**
* 命令模式:将请求封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持可撤销的操作
* 场景:队列请求(线程从队列中一个个删除命令对象,然后调用命令对象的execute方法),线程池,日程安排,事务系统(日志回滚)
*/
public class Main {

public static void main(String[] args) {    // 电灯对象(接受者)    Light light = new Light();    // 创建命令,将接受者传给它    LightOnCommand command = new LightOnCommand(light);    // 遥控器(调用者)    SimpleRemoteControl remote = new SimpleRemoteControl();    // 命令传给调用者    remote.setCommand(command);    // 按下按钮    remote.buttonWasPressed();}

}
package F_Command.a;

public class SimpleRemoteControl {
Command command;

public void setCommand(Command command) {    this.command = command;}public void buttonWasPressed() {    command.execute();}

}
package F_Command.a;

/**
* 实现打开电灯的命令
*
*/
public class LightOnCommand implements Command {
Light light;

public LightOnCommand(Light light) {    this.light = light;}public void execute() {    light.on();}@Overridepublic void undo() {    light.off();}

}
package F_Command.a;

public class Light {
public void on() {
System.out.println(“on”);
}

public void off() {    System.out.println("off");}

}
package F_Command.a;

/**
* 命令接口
*
*/
public interface Command {
void execute();

void undo();

}

0 0
原创粉丝点击