命令模式包含Client(客户端代码)、Command接口(或抽象类)、ConcreteCommand(实现Command接口)、Receiver(命令的执行者)、Invoker(调用不同的命令)。
Command接口(抽象类):定义了一个命令的接受者Receiver、抽象的执行方法Execute()。
ConcreteCommand类:实现(继承)Command,将一个接受者对象绑定于一个动作,调用接收者相应的Action()操作,以实现Execute()。
Receiver类:包括一个Action()方法,知道如何实施与执行一个请求相关的操作,任何类都可能作为一个接收者。
Invoker类:包含一个Command类型的私有成员,通过SetCommand(Command command)方法绑定具体的Command类型成员,ExecuteCommand()方法调用具体的Command成员的Execute()方法。
在Client端代码中,初始化一些命令的Receiver,Command c = new ConcreteCommand(receiver),将命令c与receiver绑定起来;初始化调用者Invoker,调用Invoker的SetCommand(c),再执行Invoker的ExecuteCommand方法。