一、定义
将一个请求封装为一个对象,从而是你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可测小的操作。
二、结构图
三、代码示例
1、测试命令模式的Action.java
/**
* 测试命令模式
* @author lattice
*
*/
public class Action {
public static void main(String[] args) {
Receiver receiver =new Receiver();
Command command=new ConcreteCommand(receiver);
Invoker invoker=new Invoker();
invoker.setCommand(command);
invoker.excuteCommand();
}
}
2、命令类Command.java
/**
* 命令抽象类
* @author lattice
*
*/
public abstract class Command {
protected Receiver receiver;
public Command(Receiver receiver) {
this.receiver = receiver;
}
public abstract void excute();
}
/**
* 具体命令类
* @author lattice
*
*/
class ConcreteCommand extends Command {
public ConcreteCommand(Receiver receiver) {
super(receiver);
}
public void excute() {
receiver.action();
}
}
/**
* 命令请求执行类
* @author lattice
*
*/
class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void excuteCommand() {
command.excute();
}
}
/**
* 接收命令请求,并作出处理的类
* @author lattice
*
*/
class Receiver {
public void action() {
System.out.println("执行请求!");
}
}