定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,可以对请求排队或记录请求日志,以及支持可撤销的操作。
代码:
package command_model;
/**
* @author naivor
* 命令模式-场景类
*/
public class CommandModel {
public static void main(String[] args) {
Receiver receiver=new Receiver();
Command command=new ConcreteCommand(receiver);
Invoker invoker=new Invoker();
invoker.SetCommand(command);
invoker.ExecuteCommand();
}
}
/**
*
* @author naivor
* 命令模式-命令抽象类
*/
abstract class Command{
protected Receiver receiver;
public Command() {
}
public Command(Receiver receiver) {
this.receiver=receiver;
}
public abstract void execute();
}
/**
*
* @author naivor
* 命令模式-具体命令类
*/
class ConcreteCommand extends Command{
public ConcreteCommand(Receiver receiver) {
super(receiver);
}
@Override
public void execute() {
receiver.action();
}
}
/**
*
* @author naivor
* 命令模式-接收者类
*/
class Receiver{
public void action(){
//业务逻辑
}
}
/**
*
* @author naivor
* 命令模式-命令管理类
*/
class Invoker{
private Command command;
public void SetCommand(Command command){
this.command=command;
}
public void ExecuteCommand(){ //还可以扩展出 "撤销/恢复"等功能
command.execute();
}
}