职责连模式

Posted 沿着路走到底

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了职责连模式相关的知识,希望对你有一定的参考价值。

概念

一步操作可能分位多个职责角色来完成

把这些角色都分开,然后用一个链串起来

将发起者和各个处理者进行隔离

演示

例如一个请假审批,需要组长审批、经理审批、最后总监审批。代码如下:

// 请假审批,需要组长审批、经理审批、最后总监审批
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 的链式操作

- Stream pipe 链式操作

1

以上是关于职责连模式的主要内容,如果未能解决你的问题,请参考以下文章

小看--职责链模式

设计模式----职责链模式

项目经理/小组长的职责

Chain Of Responsibility(职责连)-对象行为型模式

设计模式之职责链模式

团队展示与选题