美文网首页
责任链模式

责任链模式

作者: zhanghTK | 来源:发表于2018-07-01 17:34 被阅读0次

    title: 责任链模式
    date: 2017-01-16 02:35:47
    tags:

    • 设计模式
    • Java
      category: 设计模式

    当你想要让一个以上的对象有机会能够处理某个请求的时候,就是用责任链模式(Chain of Responsibility Pattern).

    ——《Head First 设计模式》

    所属类别:行为型模式。

    典型使用场景:一个事件或请求需要多步判断/处理

    针对这样的场景直接编码会造成哪些问题?

    1. 多步的判断、处理集中在一起,违反单一职责
    2. 事件的处理依赖具体的过程,而不是行为或接口,违反依赖倒置
    3. 维护期需要新的处理过程时,必须修改原有代码,违反开闭原则

    首先,可以对具体在一起的业务代码代码进行了拆分,使业务逻辑的处理分散到多个模块;

    其次,为了统一整个请求处理逻辑,抽象接口,整个请求的处理过程对外只需要暴露入口。

    实现以上过程的UML类图如下:


    责任链模式.png

    责任链模式处理请求的一般过程:


    责任链模式处理流程.png

    责任链模式的优点:

    1. 对客户端来说并不能感知到责任链的存在(迪米特法则);
    2. 整个责任链的配置过程可以使用配置方式组装,后续处理节点的调整可以修改配置(开闭原则);
    3. 请求发送者与处理者的解耦
    4. 简化了请求处理过程(单一职责)

    典型的责任链模式使用场景:JavaEE Servlet Filter

    相关文章

      网友评论

          本文标题:责任链模式

          本文链接:https://www.haomeiwen.com/subject/tsjseftx.html