命令模式
📖 概述
概述:
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。
命令模式将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
具体来说,它的目的是将命令的请求者和命令的执行者相互解耦,也就是加一个中间层。
我们会创建一个接口,它定义了一些命令,然后通过创建实现类来调用具体执行类的方法,请求者就通过调用这个实现类来驱动执行类的方法。
🔗 相关资源
🍽️ 简单栗子
Order: 作为具体的执行类(Receiver),它提供了一系列基础的方法供命令类使用
IOrderCommand: 作为命令类的接口(Command),提供了下订单和撤销订单两个操作
OrderCommand: 订单的命令类(ConcreteCommand),实现了 IOrderCommand 接口
✅ 优点
- 解耦:请求者与执行者解耦,请求者不需要知道执行者的具体实现
- 扩展性:新的命令可以很容易地添加到系统中
- 可撤销:通过实现 undo 方法,支持撤销操作
- 可组合:可以将多个命令组合成宏命令
- 可排队:支持请求排队和日志记录
❌ 缺点
- 类膨胀:每个命令都需要一个具体的命令类,命令太多时会导致类的数量急剧增加
- 复杂度:增加了系统的复杂性,对于简单的操作可能过度设计
💡 适用场景
- 需要将请求调用者和请求接收者解耦
- 需要在不同的时间指定请求、排队请求、执行请求
- 需要支持撤销操作
- 需要支持修改日志