命令模式
命令模式(Command)
把一个请求或者操作封装到一个对象中,从而达到用不同的请来对客户端进行参数化的目标;对请求排队或记录请求日志,以及支持可撤消的操作。
命令模式的构成
1.客户角色:创建一个具体命令对象,并确定其所接收者
//客户角色
public class Client {
public static void main(String[] args) {
Receiver receiver=new Receiver();
Command command=new ConcreteCommand(receiver);
Invoker invoker=new Invoker(command);
invoker.doInvokerAction();
}
}
2.命令角色:声明一个给所有具体命令类的抽象角色,通常由一个接口或抽象类实现
//命令角色
public interface Command {
public void execute();
}
3.具体命令角色:定义一个接收者和行为之间的弱耦合,实现execute方法,负责调用接收者的相应操作
//具体命令角色
public class ConcreteCommand implements Command {
private Receiver receiver;
public ConcreteCommand(Receiver receiver){
this.receiver=receiver;
}
@Override
public void execute() {
receiver.doAction();
}
}
4.请求者角色:负责调用命令对象执行请求
//请求者角色
public class Invoker {
private Command command;
public Invoker(Command command){
this.command=command;
}
public void doInvokerAction(){
command.execute();
}
}
5.接收者角色:负责具体实施和执行一个请求
//接收者角色
public class Receiver {
public void doAction(){
System.out.println("执行操作!");
}
}