命令模式:将一个请求封装成一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可以撤销的操作。也称之为:动作Action模式,事务transaction模式。
package com.gof.command;
/**
* 真正命令的执行者
* @author root
*
*/
public class Receiver {
public void action() {
System.out.println("Receiver.action()");
}
}
package com.gof.command;
public interface Command {
/**
* 这个方法是一个返回结果为空的方法
* 实际项目中,可以根据需求设计多个不同的方法
*/
void execute();
}
class ConcreteCommand implements Command{
private Receiver receive;
public ConcreteCommand(Receiver receive) {
super();
this.receive = receive;
}
@Override
public void execute() {
receive.action();
}
}
package com.gof.command;
/**
* 调用者 、发起者
* @author root
*
*/
public class Invoke {
private Command command;//也可以通过list容纳多个命令对象
public Invoke(Command command) {
super();
this.command = command;
}
/**
* 业务方法,用于调用命令类的方法
*/
public void call() {
command.execute();
}
}
package com.gof.command;
public class Client {
public static void main(String[] args) {
ConcreteCommand command = new ConcreteCommand(new Receiver());
Invoke invoke = new Invoke(command);
invoke.call();
}
}