设计模式-职责链模式

概念

  • 一步操作可能分为多个职责角色来完成
  • 把这些角色都分开,然后用一个链串起来
  • 将发起者和各个处理者进行分离

演示

js 复制代码
// 请假审批,需要组长审批、经理审批、最后总监审批
class Action {
    constructor(name) {
        this.name = name
        this.nextAction = null
    }
    setNextAction(action) {
        this.nextAction = action
    }
    handle() {
        console.log(`${this.name} 审批`)
        if (this.nextAction != null) {
            this.nextAction.handle()
        }
    }
}

let a1 = new Action('组长')
let a2 = new Action('经理')
let a3 = new Action('总监')
a1.setNextAction(a2)
a2.setNextAction(a3)
a1.handle()

JS中的链式操作

  • 职责链模式和业务结合较多,JS中能联想到链式操作
  • jQuery的链式操作,Promise.then的链式操作.

设计原则验证

  • 发起者于各个处理者进行隔离
  • 符合开放封闭原则
相关推荐
ikoala2 小时前
AI 写页面像说明书,修 Bug 像贴膏药?把这两句话写进 AGENTS.md
前端·javascript·ai编程
Penge6662 小时前
《Go 后端开发者学 TypeScript:ES Module了解》
javascript
Penge6662 小时前
《Go 后端开发者学 TypeScript:从零搭建与运行》
javascript
Penge6663 小时前
《Go 后端开发者学 TypeScript:keyof关键字》
javascript
Penge6663 小时前
《Go 后端开发者学 TypeScript:extends关键字》
javascript
张张123y3 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
心若自由何处是束缚6 小时前
适配器模式:从原理到实战的完整指南
设计模式·适配器模式
Penge6668 小时前
《Go 后端开发者学 TypeScript:typescript 类型断言》
javascript
Penge6668 小时前
《Go 后端开发者学 TypeScript:Symbol》
javascript
是2的10次方啊10 小时前
设计模式与生活⑮:看到哪儿了,得有个地方替你记着
设计模式