知识卡片

把中介者职责分散给各同事类自行处理的隐式中介者用法

普通读书笔记卡 · 1987.a.8

内容

Servlet容器的过滤器链是中介者模式思想的变体:没有显式中介者对象,而是每个过滤器 在doFilter内部调用chain.doFilter交出控制权——协调职责被拆分下放到每个同事类自己身上, 而非集中在中介者类。发散:标准中介者把协调逻辑集中一处,改规则只改一个类;分布式协调 省了中介者对象,但规则拆得到处都是,不容易一眼看全,两种写法各有取舍。

参考来源

- 位置:《设计模式之禅(第2版)》第37章《MVC框架》37.1.1节(源文件:_epub-src/text/part0158.html) - 结论依据:原文观察到"我们再回过头来仔细看看类图,是不是有点熟悉?对,类似于中介者模式,我们并没有把中介者传递到各个同事类,只是我们采用中介者模式的思想,把中介者的职责分发出去由各个同事类来处理",对应过滤器链每个过滤器内部调用`chain.doFilter(req, res)`交棒给下一个过滤器的实现。 - 原始内容:我们再回过头来仔细看看类图,是不是有点熟悉?对,类似于中介者模式,我们并没有把中介者传递到各个同事类,只是我们采用中介者模式的思想,把中介者的职责分发出去由各个同事类来处理。