【问题标题】:Chain of Responsibility, what exactly does this pattern mean?责任链,这个模式到底是什么意思?
【发布时间】:2019-09-02 09:55:27
【问题描述】:

我在想责任链模式,有几点看不懂:

  1. 处理程序可以是有条件的吗?像if (foo) { callHandlerA() } else { callHandlerB() },或者它们必须是内联的(即总是调用当前无法处理请求的下一个处理程序?)?

  2. 如果处理程序处理了一个请求,它会中断调用链吗?看起来,是的,因为它也在处理,但它没有做某事,而是什么都不做。

  3. 总的来说,我认为它与直接调用处理程序是一样的,即

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


【解决方案1】:
  1. 在具有帮助条件的另一个处理程序中选择处理程序是不好的做法,因为它会在不同处理程序之间产生硬依赖关系。
  2. 是的,如果处理程序处理了调用的请求链,则可能会中断。
  3. 你是对的。责任链模式的主要思想是灵活性和不同类之间保持低耦合

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2018-06-16
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    相关资源
    最近更新 更多