定义:将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可以撤销的操作,也称之为:动作Action模式,事务transaction模式。
结构:
Command抽象命令类
ConcreterCommand具体命令类
Invoker调用者/请求者
Receiver接收者
Client客户类
命令接口:定义一个执行方法
/**
* 命令
*/
public interface Command {
void execute();
}
真正执行者
/**
* 真正的执行者
*/
public class Receiver {
public void action(){
System.out.println("开火");
}
}
具体命令
public class ConcreteCommand implements Command {
Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
//命令真正执行前或后,执行相关的处理!
receiver.action();
}
}
发起者
/**
* 发起者
*/
public class Invoke {
private Command command;
public Invoke(Command command) {
this.command = command;
}
public void call() {
command.execute();
}
}