理解设计模式(十四)——职责链模式

职责链模式

提出问题

某一个对象(请求)可能需要经过长长的处理流程,之后才会被返回给请求者。并且,上一步的处理结果是下一步处理的输入。

比如说,一份奖学金申请表需要经过辅导员->系主任->院长->校长。后面一个人拿到的是前一个人审批结束后的结果。另外如果是校级奖学金才可能需要经过校长审批,其他奖学金不需要到校长那里。另外,有些文件可能辅导员无权处理,应该直接送报给系主任。

在这个流程中,每个人都有着自己的职责,他们都知道自己是否有权限/是否能够处理当前的请求。并且每个人都知道自己完成自己的职责后,下一个处理的人应该是谁。这样子就形成了一个链式的结构,这就是职责链。

我们要做的,就是使用代码来表述这样的职责链的结构。

解决问题

直接上代码:

class Handler {
constructor(nextHandler) {
this.nextHandler = nextHandler;
}
handle() {}
}

class HandlerA extends Handler {
handle() {
// ...
this.nextHandler.handle();
}
}

class HandlerB extends Handler {
handle() {
// ...
this.nextHandler.handle();
}
}

let hanlder = new HanlderA();
hanlder.hanlde();
Author: LeoB_O
Link: https://leob-o.github.io/2019/06/11/职责链模式/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.