命令模式深度指南:封装请求与解耦行为的艺术

发布日期:2026-07-03 10:04:23   浏览量 :0
发布日期:2026-07-03 10:04:23  
0

命令模式深度指南:封装请求与解耦行为的艺术

命令模式是一种行为型设计模式,它将请求封装为对象,从而允许您参数化客户端具有不同请求、排队或记录请求,以及支持可撤销的操作。

📖 什么是命令模式?

命令模式是一种行为型设计模式,其核心思想是将请求封装为对象,从而使您能够:

  • ✨ 参数化不同的请求
  • ✨ 队列化管理请求
  • ✨ 记录请求日志
  • ✨ 支持撤销/重做操作

🏗️ 命令模式的组成要素

┌─────────────────────────────────────────────────────────────┐
│                      命令模式架构                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌──────────┐      ┌──────────┐      ┌──────────────────┐ │
│   │  客户端  │─────▶│  调用者  │─────▶│    命令          │ │
│   │          │      │          │      │    (抽象命令)    │ │
│   └──────────┘      └──────────┘      └────────┬─────────┘ │
│                                                  │            │
│                    ┌──────────┐                  │            │
│                    │ 接收者   │◀─────────────────┤            │
│                    │          │                  │            │
│                    └──────────┘    ┌─────────────┴─────────┐  │
│                                    │                        │  │
│                          ┌─────────▼─────────┐  ┌────────▼┐ │
│                          │ 具体命令           │  │具体     │ │
│                          │                   │  │命令     │ │
│                          └─────────────────────┘  └─────────┘ │
└─────────────────────────────────────────────────────────────┘

核心角色

角色 职责 示例
命令(抽象命令) 定义执行操作的接口 命令 接口
具体命令 绑定具体操作到接收者 开灯命令, 关灯命令
调用者 发起命令请求 遥控器
接收者 真正执行操作的对象 , 电视

💻 代码示例

TypeScript 实现

// ===== 1. 接收者 =====
class  {
  打开(): void {
    console.log("💡 灯已打开");
  }

  关闭(): void {
    console.log("💡 灯已关闭");
  }
}

// ===== 2. 抽象命令接口 =====
interface 命令 {
  执行(): void;
  撤销(): void;  // 支持撤销
}

// ===== 3. 具体命令实现 =====

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据