设计模式-命令模式

概念

  • 执行命令时,发布者和执行者分开
  • 中间加入命令对象,作为中转站

演示

js 复制代码
class Receiver {
    exec() {
        console.log('执行')
    }
}

class Command {
    constructor(receiver) {
        this.receiver = receiver;
    }
    cmd() {
        console.log('触发命令')
        this.receiver.exec()
    }
}

class Invoker {
    constructor(command) {
        this.command = command
    }
    invoke() {
        console.log('开始')
        this.command.cmd()
    }
}

// 士兵
let soldier = new Receiver()
// 小号手
let trumpeter = new Command(soldier)
// 将军
let general = new Invoker(trumpeter)
general.invoke()

JS中的应用

  • 网页富文本编辑器操作,浏览器封装了一个命令对象
  • document.execCommand('bold')
  • document.execCommand('undo')

设计原则验证

  • 命令对象于执行对象分开,解耦
  • 符合开发封闭原则
相关推荐
geovindu6 小时前
rust:Builder Pattern
开发语言·设计模式·rust·建造者模式
小王师傅667 小时前
【设计模式】装饰模式(三):从装饰模式看 Java 与面向对象设计(原理篇)
设计模式
Zane199410 小时前
从一次支付渠道扩展需求,看懂"多用组合少用继承"到底在说什么
设计模式
geovindu11 小时前
CSharp:Condition Variable Pattern
后端·设计模式·c#·.net·.netcore·条件变量模式·同步型模式
geovindu11 小时前
sql: Data Modeling Patterns using mysql
sql·mysql·设计模式·数据库开发
sarasuki1 天前
失败重试:Agent 中指数退避的正确姿势
人工智能·设计模式·agent
Zane19941 天前
为什么你写的 Java 代码"看着面向对象、实际是面向过程"?
设计模式
geovindu1 天前
sql: Data Modeling Patterns
数据库·sql·设计模式·sqlserver
YHL3 天前
🎯 JavaScript 单例模式(Singleton Pattern)—— 从理论到实战
javascript·设计模式
2401_868534783 天前
网络环境规划核心考点全梳理
网络·设计模式