使用场景
命令模式,英文名Command Pattern
该模式在处理工作时,不是直接去处理,而是将工作封装为一系列的命令,交给接收者去处理
这样做的好处是,工作是难以记录的,但命令是可以记录的
将这些命令记录起来,就可以实现日志、撤销、恢复、重做等功能
实现代码
//任务执行者
//执行者并不是自己去执行,而是将任务转给对应的接收者去处理
public class Invoker {
LinkedList commands = new LinkedList();
public void invoke(Command command) {
this.commands.addLast(command);
command.execute();
}
public void undo() {
Command last = commands.getLast();
last.cancel();
commands.removeLast();
}
public void redo() {
Command last = commands.getLast();
last.execute();
}
}
//任务命令
public class Command {
Receiver receiver;
public Command(Receiver receiver) {
this.receiver = receiver;
}
public void execute() {
receiver.execute(this);
}
public void cancel(){
receiver.cancel(this);
}
}
//任务接收者
public class Receiver {
public void execute(Command command) {
}
public void cancel(Command command) {
}
}