命令模式深度指南:封装请求与解耦行为的艺术
命令模式是一种行为型设计模式,它将请求封装为对象,从而允许您参数化客户端具有不同请求、排队或记录请求,以及支持可撤销的操作。
📖 什么是命令模式?
命令模式是一种行为型设计模式,其核心思想是将请求封装为对象,从而使您能够:
- ✨ 参数化不同的请求
- ✨ 队列化管理请求
- ✨ 记录请求日志
- ✨ 支持撤销/重做操作
🏗️ 命令模式的组成要素
┌─────────────────────────────────────────────────────────────┐
│ 命令模式架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ 客户端 │─────▶│ 调用者 │─────▶│ 命令 │ │
│ │ │ │ │ │ (抽象命令) │ │
│ └──────────┘ └──────────┘ └────────┬─────────┘ │
│ │ │
│ ┌──────────┐ │ │
│ │ 接收者 │◀─────────────────┤ │
│ │ │ │ │
│ └──────────┘ ┌─────────────┴─────────┐ │
│ │ │ │
│ ┌─────────▼─────────┐ ┌────────▼┐ │
│ │ 具体命令 │ │具体 │ │
│ │ │ │命令 │ │
│ └─────────────────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────────┘
核心角色
| 角色 | 职责 | 示例 |
|---|---|---|
| 命令(抽象命令) | 定义执行操作的接口 |
命令 接口 |
| 具体命令 | 绑定具体操作到接收者 |
开灯命令, 关灯命令
|
| 调用者 | 发起命令请求 | 遥控器 |
| 接收者 | 真正执行操作的对象 |
灯, 电视
|
💻 代码示例
TypeScript 实现
// ===== 1. 接收者 =====
class 灯 {
打开(): void {
console.log("💡 灯已打开");
}
关闭(): void {
console.log("💡 灯已关闭");
}
}
// ===== 2. 抽象命令接口 =====
interface 命令 {
执行(): void;
撤销(): void; // 支持撤销
}
// ===== 3. 具体命令实现 =====
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。