Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >设计模式 ☞ 行为型之责任链模式

设计模式 ☞ 行为型之责任链模式

作者头像
Demo_Null
发布于 2021-01-20 03:46:11
发布于 2021-01-20 03:46:11
4380
举报
文章被收录于专栏:Java 学习Java 学习

1.1 简介

1.1.1 概述

  责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式也叫职责链模式。

1.1.2 优缺点

优点:  ① 降低了对象间的耦合。一个对象无须知道到底是哪个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。  ② 增强了系统的可扩展性。可以根据需要增加新的请求处理类,满足开闭原则。  ③ 增强了给对象指派职责的灵活性。当工作流程发生变化,可以动态地改变链内的成员的次序,也可动态地新增或者删除责任。  ④ 责任链简化了对象之间的连接。每个对象只需保持一个指向其后继者的引用,不需保持其他所有处理者的引用,避免了众多的 if。  ⑤ 责任分担。每个类只需要处理自己该处理的工作,不该处理的传递给下一个对象完成,明确各类的责任范围,符合单一职责原则。

缺点:  ① 不能保证每个请求一定被处理。由于一个请求没有明确的接收者,所以不能保证它一定会被处理,该请求可能得不到处理。  ② 对比较长的职责链,请求的处理可能涉及多个处理对象,系统性能将受到一定影响。  ③ 职责链建立的合理性要靠客户端来保证,增加了客户端的复杂性,可能会由于职责链的错误设置而导致系统出错。

1.2 案例

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【进阶之路】理解行为型模式开发(责任链模式)
.markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{line-height:1.5;margin-top:35px;margin-bottom:10px;padding-bottom:5px}.markdown-body h1{font-size:30px;margin-bottom:5px}.markdown-body h2{padding-bottom:12px;font-size:24px;border-bottom:1px solid #ececec}.markdown-body h3{font-size:18px;padding-bottom:0}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:15px}.markdown-body h6{margin-top:5px}.markdown-body p{line-height:inherit;margin-top:22px;margin-bottom:22px}.markdown-body img{max-width:100%}.markdown-body hr{border:none;border-top:1px solid #ddd;margin-top:32px;margin-bottom:32px}.markdown-body code{word-break:break-word;border-radius:2px;overflow-x:auto;background-color:#fff5f5;color:#ff502c;font-size:.87em;padding:.065em .4em}.markdown-body code,.markdown-body pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}.markdown-body pre{overflow:auto;position:relative;line-height:1.75}.markdown-body pre>code{font-size:12px;padding:15px 12px;margin:0;word-break:normal;display:block;overflow-x:auto;color:#333;background:#f8f8f8}.markdown-body a{text-decoration:none;color:#0269c8;border-bottom:1px solid #d1e9ff}.markdown-body a:active,.markdown-body a:hover{color:#275b8c}.markdown-body table{display:inline-block!important;font-size:12px;width:auto;max-width:100%;overflow:auto;border:1px solid #f6f6f6}.markdown-body thead{background:#f6f6f6;color:#000;text-align:left}.markdown-body tr:nth-child(2n){background-color:#fcfcfc}.markdown-body td,.markdown-body th{padding:12px 7px;line-height:24px}.markdown-body td{min-width:120px}.markdown-body blockquote{color:#666;padding:1px 23px;margin:22px 0;border-left:4px solid #cbcbcb;background-color:#f8f8f8}.markdown-body blockquote:after{display:block;content:""}.markdown-body blockquote>p{margin:10px 0}.markdown-body ol,.markdown-body ul{padding-left:28px}.markdown-body ol li,.markdown-body
南橘
2021/04/02
2640
【进阶之路】理解行为型模式开发(责任链模式)
拯救代码洪水:深入揭秘责任链模式的设计之道
今天和大家聊一聊软件设计中关系型模式的另一种强大模式:责任链模式(Chain of Responsibility)。
程序视点
2023/09/13
1790
拯救代码洪水:深入揭秘责任链模式的设计之道
设计模式-责任链模式
责任链模式 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起, 将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这 条链传递,直到有对象处理它为止。 1.优点 降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。 增强了系统的可扩展性。可以根据需要增加新的请求处理类,满足开闭原则。 增强了给对象指派职责的灵活性
cwl_java
2019/10/26
4150
【Java设计模式】021-责任链模式
责任链(Chain of Responsibility)模式:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
訾博ZiBo
2025/01/06
930
设计模式-责任链模式
责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
六个核弹
2022/12/23
4140
前端设计模式之责任链模式
责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。(此处引自 gof 设计模式)
Cookieboty
2020/10/14
1.1K0
设计模式- 责任链模式
即将所有处理某种请求的对象一个接一个的排成序列,当某个任务来临时,按照次序列依次执行下去,直至有对象处理。
开源519
2022/05/03
3350
码仔漫画:做个审批流程,被领导怒怼“什么玩意儿”!
责任链模式(Chain of Responsibility),又名职责链模式,是一种对象行为型模式。定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
陈宇明
2021/06/09
5410
码仔漫画:做个审批流程,被领导怒怼“什么玩意儿”!
Java职责链模式的深入了解
这篇文章主要为大家介绍了Java职责链模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
用户7353950
2022/06/23
2100
Java职责链模式的深入了解
设计模式——职责链模式
设计模式——职责链模式
Java架构师必看
2021/05/14
3000
设计模式——职责链模式
设计模式----责任链模式
一个事件需要经过多个对象处理是一个挺常见的场景,譬如采购审批流程,请假流程,软件开发中的异常处理流程,web请求处理流程等各种各样的流程,可以考虑使用责任链模式来实现。
大忽悠爱学习
2021/11/15
6420
设计模式-责任链模式
责任链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。
码哥字节
2020/03/24
5350
Java面向对象设计之责任链模式
很多情况下,在一个软件系统中可以处理某个请求的对象不止一个。例如审批工作流等,他们可以构成一条处理采购单的链式结构,采购单(可以看作是要处理的信息)沿着这条链进行传递,这条链就称为责任链。责任链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,责任链模式可以将请求的处理者组织成一条链,并让请求沿着链传递,由链上的处理者对请求进行相应的处理。在此过程中,客户端实际上无须关心请求的处理细节以及请求的传递,只需将请求发送到链上即可,从而实现请求发送者和请求处理者解耦。
Abalone
2022/07/14
5180
Java面向对象设计之责任链模式
设计模式(十六):行为型之责任链模式
冬天vs不冷
2025/01/21
1040
设计模式(十六):行为型之责任链模式
Java设计模式-责任链模式
例如,采购审批流程、请假流程等。就像我们在校请假,辅导员只能批1天,院长批3天到7天,7天以上得找书记签字。我们就得根据请假天数的不同去找不同的老师签名,也就是说我们必须记住每个老师姓名、办公室位置等等,这无疑就增加难度啦。但是转换到软件设计中就可以使用责任链模式来实现,可以简单很多,效率也会高许多。
宁在春
2022/10/31
2710
设计模式之责任链模式及典型应用
一个事件需要经过多个对象处理是一个挺常见的场景,譬如采购审批流程,请假流程,软件开发中的异常处理流程,web请求处理流程等各种各样的流程,可以考虑使用责任链模式来实现。
小旋锋
2019/01/21
5.1K1
23种设计模式之责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。
Java技术债务
2022/09/26
1900
23种设计模式之责任链模式
Java设计模式之责任链模式 原
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
chinotan
2019/04/03
5250
Java设计模式之责任链模式
                                                                            原
责任链模式
责任链模式Chain of Responsibility Pattern为请求创建了一个接收者对象的链,其对请求的发送者和接收者进行解耦,这种类型的设计模式属于行为型模式,在这种模式中,通常每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
WindRunnerMax
2020/10/26
5190
详解设计模式:责任链模式
首先它可以对同一模块中有先后执行顺序要求的类或对象进行成链,以达到高聚合的目的。同时对于单一执行状态下的执行步骤,可以通过非状态模式的成链方式进行组装,便可以实现改变执行顺序的目的,让代码维护性变高。
栗筝i
2022/12/05
7440
详解设计模式:责任链模式
相关推荐
【进阶之路】理解行为型模式开发(责任链模式)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档