命令模式
命令模式(Command Pattern):封装请求的艺术
命令模式是行为型设计模式的一种,核心思想是将请求(方法调用)封装为一个独立的对象,使请求的发送者与接收者解耦。通过命令对象,可实现请求的参数化、排队、日志记录及撤销等功能,本质是 “将操作封装为对象,实现请求的灵活管理”。
命令模式的核心结构

命令模式通过四个核心角色实现请求的封装与解耦,分工明确且扩展性强:
命令接口(Command)
- 定义命令的抽象接口,声明执行命令的方法(通常为
execute()),是所有具体命令的父类。 - 示例:
OrderCommand(订单命令接口,声明execute()方法)。
具体命令(ConcreteCommand)
- 实现命令接口,封装具体的请求逻辑,通常持有接收者(Receiver)的引用,并在
execute()方法中调用接收者的相关方法完成请求。 - 示例:
PayOrderCommand(支付订单命令)、CancelOrderCommand(取消订单命令)。
接收者(Receiver)
- 真正执行命令的对象,包含完成命令所需的业务逻辑(如支付、取消等操作)。
- 示例:
OrderService(订单服务,提供pay()、cancel()等方法)。
调用者(Invoker)
- 触发命令执行的对象,持有命令对象的引用,通过调用命令的
execute()方法触发请求,不直接与接收者交互。 - 示例:
OrderController(订单控制器,接收用户请求并触发对应命令)。
代码实现示例
以 “订单管理系统” 为例,展示命令模式的实现:支持支付订单和取消订单操作,通过命令对象封装这些操作,实现解耦和日志记录。



