美文网首页
责任链模式

责任链模式

作者: 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