将一个请求封装为一个对象,从而可以使我们可以用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。事务的底层实现也是命令模式。
命令模式主要分为几种角色:命令、命令的执行者、命令的发起者
命令的执行者
public class Receiver {
public void action(){
System.out.println("Receiver.action");
}
}
命令和命令具体的实现类
public interface Command {
void excute();
}
class ConcreteCommand implements Command{
//命令的执行者
private Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void excute() {
//前后可以执行负责的操作
receiver.action();
}
}
命令的调用者
public class Invoke {
//持有命令对象
private Command command;
public Invoke(Command command) {
this.command = command;
}
public void call(){
//前后可以执行复杂的操作
command.excute();
}
}
测试类
public class Test {
public static void main(String[] args) {
Command command = new ConcreteCommand(new Receiver());
Invoke invoke = new Invoke(command);
invoke.call();
}
}
最后输出:
Receiver.action