知识卡片

责任链模式的性能与调试代价及节点数量约束

普通读书笔记卡 · 1988.a.2

内容

[[责任链模式的定义与传递判断机制]]的优点是彻底解耦请求者和处理者,但代价有两个:性能 问题(最坏要遍历整条链);调试不便(传递过程类似递归,排查困难)。实践中应对办法是在 setNext方法内校验节点数量是否超过阈值,超过则拒绝继续建链。发散:责任链本身没有链长度 的天然上限,不主动约束会随业务规则增多无限延伸,从解耦方案退化成性能瓶颈。

参考来源

- 位置:《设计模式之禅(第2版)》第16章《责任链模式》(源文件:_epub-src/text/part0073.html) - 结论依据:原文列出责任链模式两个缺点:性能问题(链头遍历到链尾)、调试不便(类似递归的逻辑),并给出注意事项"在Handler中设置一个最大节点数量,在setNext方法中判断是否已经是超过其阈值,超过则不允许该链建立"。 - 原始内容:责任链有两个非常显著的缺点:一是性能问题,每个请求都是从链头遍历到链尾……二是调试不很方便……链中节点数量需要控制,避免出现超长链的情况,一般的做法是在Handler中设置一个最大节点数量。