文章目录

  • 前言
  • 一、责任链模式定义
  • 二、责任链模式结构
  • 三、责任链高级应用
  • 四、责任链模式优缺点
  • 设计模式系列文章
  • 结尾

前言

作者更有一系列设计模式文章(还在持续更新),图例丰富,少量代码,适合入门,系列文章见末尾跳转

一、责任链模式定义

责任链模式:简单的说就是由层层处理节点构成的链条,链表每一个节点处理相应责任,并传递到下一节点。避免了发起请求对象对多个目标的引用,而是只需要指向其上层节点。

  • 注意,责任链之间功能不一定要相互递进(传入一个标志,可以指定哪部分责任节点执行功能,其余节点只负责传递责任即可),比如可以直接保存传入的字符,而不需要任何其他处理。
  • 避免责任发起方对责任接收方的引用:比如我需要对单词排序、组合、保存文件三个功能,普通方法需要使用三个功能对象的引用分别处理,但是目前在责任链下,只需要传入需要的责任标志,然后交给第一个责任节点即可。

二、责任链模式结构

由于每个责任节点都应该有传递到下一个责任节点的功能,而且为了复用性,应该统一处理函数名,类似于结构型模式的只有一个下属的组合模式(组合模式见此),据此设计出如下结构:

  • Hadnler:作为责任链模式的节点抽象类,定义了节点应该包含下一节点信息,具有处理责任请求的函数——函数中需要实现责任的转发功能,即调用下一节点的处理函数。

  • ConcreteHandler:具体责任节点,需要实现责任的判断(是否需要自己处理),责任处理函数,以及责任转发同上。

  • Client:使用者,应该保存责任链的头部信息,需要时传入责任请求使用责任链层层处理。

三、责任链高级应用

Filter过滤器处理
过滤链在很多地方都有体现,比如I/O流的过滤器,服务器的过滤器等,具体思想也就是责任链形式,对传入的信息层层把关,通过层层过滤器Filter实现过滤作用。
Dispatcher转发器
传入一个请求,通过转发器分配给相应功能对象,相信接触过Spring框架的都不会陌生,其实这也算是一个责任链,由一个节点(转发器)指向多个处理对象(功能对象),其功能对象同时也可以重新指向转发器,然后转发到另一个功能对象,实现多次通过一个责任节点跳转。

四、责任链模式优缺点

优点:

  • 低耦合度:责任发送者和接收者不需要依赖,通过链条传递
  • 简化使用,良好设计:每个节点负责一个责任,一个入口,多种功能
  • 灵活:改变顺序or自由修改节点可以有效修改功能,新增处理节点也很方便

缺点:

  • 请求不一定有效,无效请求会历遍责任链条(可以加判断节点)
  • 有可能循环调用

设计模式系列文章

系列文章:

一、创建型模式——工厂模式
二、创建型模式——单例模式、原型模式
三、创建型模式——建造者模式
四、结构型模式——装饰者模式
五、结构型模式——代理、适配器模式
六、结构型模式——外观模式
七、结构型模式——三合一(组合模式、桥接模式、享元模式)
八、行为型模式——观察者模式
九、行为型模式——迭代器模式
十、行为型模式——模板方法、策略方法模式
十一、行为型模式——命令模式
十二、行为型模式——责任链模式


结尾

作者长期更新,如果觉得本文还算不错的话,请给我一个大大的赞!!!
如果非常赞同这篇文章,请关注我,持续了解更多精彩博文!!!

作者主攻Java Web方向,平时长期更新Java Web基础概念文章,以及算法和数据结构——【一日双题—见微知著】系列。同时设计模式系列也会尽快一月内完结

设计模式——行为型模式之责任链模式(简简单单入门责任链,理解I/O流消息怎么逐步传递处理以及服务器框架转发)相关推荐

  1. Java设计模式之行为型:责任链模式

    背景: 学校规定参加校招的同学必须要请假,且要有相关人员的签字,三天以下需辅导员签字.三到七天需要系主任签字,一个星期以上需要院长签字,更多的则需要校长签字! 上图将学生.辅导员.系主任.院长.校长组 ...

  2. 设计模式-行为型模式-责任链模式

    设计模式-行为型模式-责任链模式 定义 将请求沿着链传递,然后直到对象处理即可. UML图 代码 基本的责任链 public class Test{public void test(int i, Re ...

  3. Java设计模式学习总结(15)——行为型模式之责任链模式

    责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...

  4. 行为型设计模式(1)—— 责任链模式(Chain of Responsibility Pattern)

    文章目录 1.简介 2.使用场景 3.示例 4.变种 参考文献 1.简介 经常听身边的同事说其在项目中用到了责任链模式,今天就来学习一下什么是责任链模式. 责任链模式(Chain of Respons ...

  5. 【设计模式系列】行为型之责任链模式

    目录 背景 理论 实践 总结 背景 责任链模式,小编在自己项目迭代过程也参与了维护和设计实现:本篇博文主要针对该设计模型进行总结和实践: 简单举例日常生活或者工作中能够接触的责任链模式场景:采购审批流 ...

  6. 设计模式 — 行为型模式 — 责任链模式

    目录 文章目录 目录 责任链模式 应用场景 代码示例 责任链模式 责任链模式,将多个处理方法连接成一条链条,请求将在这条链条上流动直到该链条中有一个节点可以处理该请求.通常这条链条是一个对象包含对另一 ...

  7. [设计模式-行为型]责任链模式(Chain of Responsibility)

    概括 名称 Chain of Responsibility 结构 动机 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一 ...

  8. 一起学设计模式 - 责任链模式

    责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...

  9. 折腾Java设计模式之责任链模式

    责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...

最新文章

  1. Java并发编程(一)Thread详解
  2. conda 基本操作
  3. python读取txt文件并写入excel-Python读excel生成数据存入txt文件
  4. mysql concat键值对_MySQL中concat函数
  5. OpenGL编程指南7:视图-
  6. Boost:演示如何计算加权统计信息
  7. Windows 2012 下Redmine安装和环境搭建
  8. 按摩椅浏览器测试浏览器可视窗口大小
  9. oracle Instance status: READY–lsnrctl status|start|stop
  10. 比尔盖茨:十条“金口玉言”-- 世界不会在意你的自尊
  11. java装箱与拆箱_【转】java 自动装箱与拆箱
  12. python生成热度图_python根据输入的数据在地图上生成热力图效果
  13. memcache/memcached/memcachedb 配置、安装
  14. 云智慧悄然“变身”业务运维,到底发生了什么?
  15. 使用JavaScript 实现简单的移动和缓动的动画效果
  16. 遥感影像的“全色”与“多光谱”
  17. 从零开始学数据分析之数据分析概述
  18. mysql5.155安装教程_git快速入门
  19. 三大峰会七大论坛,MDCC 2013中国移动开发者大会将在京举行
  20. ECCV2020 | SNE-RoadSeg:一种基于表面法向量提取的道路可行驶区域分割方法

热门文章

  1. element upload预览_element-ui上传组件图片默认不上传显示图片缩略图
  2. 考研英语 - word-list-1
  3. u盘 linux 装系统 suse,从u盘启动安装opensuse 11.4 livecd
  4. lstm对时间数据的预测作用(多变量对多变量预测)
  5. 大数据能否解决城市所面临的环境问题
  6. python 爬取天猫店铺商品评论
  7. 一年级描写下雪的古诗,古诗翻译及重点知识点心田花开汇总
  8. error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such
  9. fixture ‘xxx‘ not found
  10. SAP系统md04例外消息说明