client(客户端,客户端是命令的请求者)把命令封装成 command(命令对象),并给 command 设置 receiver(接收者,命令对象本身不执行命令,而是通过调用接收者的方法来执行命令,因此接收者才是真正执行命令的对象),然后把 command 交给 invoker(调用者,调用者可以持有多个命令对象,相当于命令对象的入口),之后 client 通过调用 invoker 来执行命令,而不与命令对象直接交互(调用路径为:client => invoker => command => receiver)
命令模式的主要目的是:将命令的请求者(client)和命令的执行者(receiver)进行解耦。解耦之后,可以对请求进行排队、记录请求日志、撤销请求等。
Client
组装命令对象和接收者
Command
ConcreteCommand
receiver
invoker