命令模式(Command)将请求封装成一个对象。
命令模式又可称为动作(Action),事务(Transaction)。
命令模式包含五部分:
- Comand 执行操作的接口,如Execute()
- ConcreteComnand 命令的具体实现,绑定接收者,并调用接收者相应操作,以实现Execute
- Client 命令的装配者,创建一个ConcreteComnand对象,并指定它的Receiver
- Invoker 持有并调用ConcreteComnand的Execute操作,以提交一个请求
- Receiver 执行请求的接收者
Command
interface Command {
void execute();
}
ConcreteCommand
class ConcreteCommand implements Command {
private Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
receiver.action();
}
}
Client
class Client {
ConcreteCommand concreteCommand = new ConcreteCommand(new Receiver());
void test() {
Invoker invoker = new Invoker(concreteCommand);
invoker.action();
}
}
Invoker
class Invoker {
private ConcreteCommand concreteCommand;
public Invoker(ConcreteCommand concreteCommand) {
this.concreteCommand = concreteCommand;
}
void action() {
concreteCommand.execute();
}
}
Receiver
class Receiver {
void action() {
}
}