美文网首页
学习笔记:设计模式之职责链模式

学习笔记:设计模式之职责链模式

作者: 大力papa | 来源:发表于2020-11-27 09:56 被阅读0次

本文仅供学习交流使用,侵权必删。
不作商业用途,转载请注明出处

WHAT 什么是职责链模式

职责链模式(Chain Of Responsibility Design Pattern),将处理请求的功能代码进行解耦,让每个处理请求的对象串成一条链,并顺着这条职责链传递请求,直到某个特定条件判定无需再往下传递为止。
很多开源框架中都有用到职责链模式,如servlet filter、spring interceptor和mybatis plugin等等。

职责链UML

WHY 为什么使用职责链模式

优点

  • 针对请求处理的代码进行解耦,让每个处理类处理特定的业务逻辑,符合单一职责原则
  • 如果业务发生变更需要添加新的处理逻辑,只需往链上添加新的处理器,无需修改原来的处理器代码,符合开闭原则

缺点

  • 处理器设置不当,会形成一个闭环。

HOW 职责链模式的实现(JAVA)

  • 处理器抽象类
public abstract class Handler {

    protected Handler successorHandler;

    public final void handle() {
        boolean successor = doHandle();
        if (successor && successorHandler != null) {
            successorHandler.handle();
        }

    }

    public abstract boolean doHandle();

    public void setSuccessorHandler(Handler successorHandler) {
        this.successorHandler = successorHandler;
    }
}

  • 处理链对象
public class HanderChain {
    private Handler head;
    private Handler tail;
    
    public Handler addHandler(Handler h) {
        if (head == null && tail == null) {
            head = h;
            tail = h;
            return h;
        }

        tail.setSuccessorHandler(h);
        tail = h;
        return h;
    }

    public void handle() {
        if (head != null) {
            head.handle();
        }
    }
}

持续更新...

相关文章

  • Chan of Responsibility 责任链模式

    设计原则学习笔记 设计模式学习笔记 作用 将请求以其职责拆成,并以链的结构组合,使请求在链中传递并且可以在链中拦...

  • 学习笔记:设计模式之职责链模式

    本文仅供学习交流使用,侵权必删。不作商业用途,转载请注明出处 WHAT 什么是职责链模式 职责链模式(Chain ...

  • 设计模式-工具链模式和迭代器模式

    设计模式-职责链模式和迭代器模式 1.职责链模式 设计动机客户端发出一个请求,职责链上的对象都可以处理这一请求,而...

  • 设计模式之职责链模式

    在业务开发中,为了处理某个属性,可能需要复杂的处理逻辑,才能得到,一般的做法是按步骤处理,最终得到想要的结果。作者...

  • 设计模式之职责链模式

    职责链模式 责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求...

  • 设计模式之职责链模式

    定义 职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在...

  • 设计模式之职责链模式

    职责链模式使得多个对象都有机会处理请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。结...

  • 设计模式之职责链模式

    定义 职责链模式(Chain of responsibility)是使多个对象都有机会处理请求,从而避免请求的发送...

  • iOS面试之设计模式模块

    设计模式 设计模式内容如下: 责任链模式 桥接模式 命令模式 适配器模式 单例模式 等等 设计原则 单一职责原则 ...

  • Typescript 职责链模式(Chain of Respon

    标签: 前端 设计模式 职责链模式 typescript Chain of Responsibility 请仔细阅...

网友评论

      本文标题:学习笔记:设计模式之职责链模式

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