title: 责任链模式
date: 2017-01-16 02:35:47
tags:
- 设计模式
- Java
category: 设计模式
当你想要让一个以上的对象有机会能够处理某个请求的时候,就是用责任链模式(Chain of Responsibility Pattern).
——《Head First 设计模式》
所属类别:行为型模式。
典型使用场景:一个事件或请求需要多步判断/处理
针对这样的场景直接编码会造成哪些问题?
- 多步的判断、处理集中在一起,违反单一职责
- 事件的处理依赖具体的过程,而不是行为或接口,违反依赖倒置
- 维护期需要新的处理过程时,必须修改原有代码,违反开闭原则
首先,可以对具体在一起的业务代码代码进行了拆分,使业务逻辑的处理分散到多个模块;
其次,为了统一整个请求处理逻辑,抽象接口,整个请求的处理过程对外只需要暴露入口。
实现以上过程的UML类图如下:

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

责任链模式的优点:
- 对客户端来说并不能感知到责任链的存在(迪米特法则);
- 整个责任链的配置过程可以使用配置方式组装,后续处理节点的调整可以修改配置(开闭原则);
- 请求发送者与处理者的解耦
- 简化了请求处理过程(单一职责)
典型的责任链模式使用场景:JavaEE Servlet Filter
网友评论