【发布时间】:2019-09-02 09:55:27
【问题描述】:
我在想责任链模式,有几点看不懂:
处理程序可以是有条件的吗?像
if (foo) { callHandlerA() } else { callHandlerB() },或者它们必须是内联的(即总是调用当前无法处理请求的下一个处理程序?)?如果处理程序处理了一个请求,它会中断调用链吗?看起来,是的,因为它也在处理,但它没有做某事,而是什么都不做。
总的来说,我认为它与直接调用处理程序是一样的,即
function doItHandlingMaster(data) {
if (handlerA(data)) {
return;
}
if (handlerB(data)) {
return;
}
if (handlerC(data)) {
return;
}
... and so on
}
所以该模式的主要思想是灵活性(我们可以定义一次步骤并重用它们)和虱子耦合(我们只知道入口,而不知道所有处理步骤),对吧?
我多次看到这种模式(Express、DOM、Angular,几乎无处不在),并想清楚地理解它。
谢谢!
【问题讨论】:
标签: oop design-patterns architecture