责任链模式

2018-07-01  本文已影响0人  zhanghTK

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


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

——《Head First 设计模式》

所属类别:行为型模式。

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

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

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

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

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

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


责任链模式.png

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


责任链模式处理流程.png

责任链模式的优点:

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

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

上一篇下一篇

猜你喜欢

热点阅读