命令模式
命令模式将命令对应的动作封装成对象,以便在不同的上下文中使用。命令模式的关键是将请求的发送者和接收者解耦,将二者沟通的细节封装在单独的命令对象中。
结构
命令模式示意图
命令模式中,客户端将命令对象与触发者对象绑定(若有必要,在创建命令对象前先创建接收者并将其与命令对象关联),触发者对象存储一个命令对象的引用,当触发者对象接收到请求时,会调用命令对象的方法。
发送者触发命令,而不向接收者直接发送请求。发送者只能通过命令接口与其命令进行交互。发送者并不负责创建命令对象,而是通过依赖注入的方式接收命令对象。
命令对象并不实际执行命令,而是在内部调用一系列接收者的方法。绝大部分命令只处理如何将请求传递到接收者的细节,接收者自己会完成实际的工作。接收者所需的命令参数也在命令对象中存储。