1责任链模式
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
责任链模式的关键是将用户的请求分派给许多对象,这些对象被组织成一个责任链,即每个对象含有后继对象的引用,并要求责任链上的每个对象,如果能处理用户的请求,就做出处理,不再将用户的请求传递给责任链上的下一个对象;如果不能处理用户的请求,就必须将用户的请求传递给责任链上的下一个对象。
2责任链模式-结构
模式的结构中包括两种角色:
- 处理者(Handler)
- 具体处理者(ConcreteHandler)
3责任链模式-场景描述
游戏击鼓传花,一旦名花有主就唱歌
4责任链模式-场景分析
- 处理者
参加游戏的人传花者 Player - 具体处理者
具体传花者
张三
李四
王五
赵六
等
5责任链模式-代码实现
package patterns.ResponsibilityChain; public abstract class Player { public Player nextPlayer; public abstract void handle(); public Player getNextPlayer() { return nextPlayer; } public void setNextPlayer(Player nextPlayer) { this.nextPlayer = nextPlayer; } } package patterns.ResponsibilityChain; public class ZhangSanPlayer extends Player { @Override public void handle() { if(getNextPlayer()!=null){ getNextPlayer().handle(); }else{ System.out.println("zhang san sing"); } } } package patterns.ResponsibilityChain; public class LisiPlayer extends Player { @Override public void handle() { if(getNextPlayer()!=null){ getNextPlayer().handle(); }else{ System.out.println("li si sing"); } } } package patterns.ResponsibilityChain; public class WangwuPlayer extends Player { @Override public void handle() { if(getNextPlayer()!=null){ getNextPlayer().handle(); }else{ System.out.println("wang wu sing"); } } } package patterns.ResponsibilityChain; public class Client { public static void main(String[] args) { System.out.println("开始敲鼓"); Player zs = new ZhangSanPlayer(); Player ls = new LisiPlayer(); zs.setNextPlayer(ls); Player ww = new WangwuPlayer(); ls.setNextPlayer(ww); System.out.println("鼓停"); zs.handle(); } }
6责任链模式的优点
责任链中的对象只和自己的后继是低耦合关系,和其他对象毫无关联,这使得编写处理者对象以及创建责任链变得非常容易。
当在处理者中分配职责时,责任链给应用程序更多的灵活性。
应用程序可以动态地增加、删除处理者或重新指派处理者的职责。
应用程序可以动态地改变处理者之间的先后顺序。
使用责任链的用户不必知道处理者的信息,用户不会知道到底是哪个对象处理了它的请求。
相关推荐
供应链管理模式主要包括以制造企业、批发商、零售商为主导以及以第三方物流(3PL)为主导的模式。3PL是指由专业物流公司为其他企业提供物流服务,这种模式强调合同物流、业务外包和利润中心的特性,有助于企业降低...
供应链风险管理是供应链管理领域的重要组成部分,它关注于识别、评估、优先级排序和应对供应链中可能出现的各种风险。供应链风险可能来源于内部操作失误、外部环境变化、供应商不稳定、市场需求波动、自然灾害等因素...
JIT系统为企业带来诸多益处,如降低成本、提高质量、提升员工责任感以及降低未售商品风险。以戴尔公司为例,其运用JIT理念,实现了订单与生产、销售与现金流之间的高效对接,显著优于竞争对手。 JIT与传统的存货...
行为型模式主要关注对象之间的交互和责任分配,比如策略模式、模板方法模式、观察者模式、访问者模式、命令模式、迭代器模式、备忘录模式、状态模式、解释器模式和职责链模式。这一章将详细讲解这些模式在JAVA编程中...
- **责任链模式**:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 8. **第二十章至第二十二章:算法封装模式** - **内容概述**:这部分探讨了如何封装算法。 - **知识点**: - **...
第十章讲解了解释器模式及其动机,同时还提供了Python语言的概述。这一章节展示了如何利用Python语言特性来构建解释器,以及如何从Java控制Python解释器。 #### 十二、回调 第十一章探讨了观察者模式,这是一种行为...
第十章 使用算法 186 10.1 选择算法 186 10.2 公钥密码与对称密码 188 10.3 通信信道加密 188 10.4 加密数据存储 191 10.5 硬件加密与软件加密 194 10.6 压缩、编码、加密 195 10.7 检测加密 196 10.8 密文中隐藏...
第十章 政策措施: 实施一系列经济激励、税收优惠和资金支持政策,促进生物柴油产业的发展。 第十一章 监视管理: 建立完善的监管体系,对生产、销售和使用环节进行有效监控,确保法规的执行和市场的公正。 第十二...
**第十章 投资估算及资金筹措** 报告对建设投资、建设期利息、流动资金、总投资和资金筹措进行了详细估算,制定了资金使用计划。 **第十一章 财务效益、经济和社会效益评价** 通过对成本、收入、税收等的分析,评估...
**第十章 工程风险分析与控制** 此部分识别了可能的风险,如技术难题、预算超支、员工抵触等,并提出了相应的风险管理策略,以降低风险对项目的影响。 **第十一章 效益分析** 最后,报告对项目的经济效益进行了...
**第十章 组织机构及劳动定员** 设立合理的组织架构,计划招聘专业人才,确保项目的高效运作。 **第十一章 进度安排及实施方案** 项目进度安排明确,分为前期准备、施工阶段、运营阶段等多个步骤,确保按计划进行...
第八章至第十章通常涉及项目的组织管理、进度安排、招投标程序以及后期的运营和维护计划,这些都是保证项目成功实施的重要环节。 总体来说,这个3万吨食用油仓储设施建设工程是一个结合了经济发展、市场需求、技术...
- **第十章** **国际企业的战略**: - 战略规划与执行的重要性。 - 全球扩张与利润增长的关系。 - 成本压力与市场适应性之间的平衡。 - 不同战略选择的优缺点分析。 - **第十一章** **国际企业的组织**: - ...
第十章 菜单及其他资源 10.l 图标、光标、字符串和定制资源 10.1.1 将图标添加到程序 10.1.2 获取图标句柄 10.1.3 在程序中使用图标 10.1.4 使用自定义光标 10.1.5 字符串资源 10.1.6 定制资源 ...
### 第十章 项目沟通管理 #### 沟通的分类 沟通可以分为正式和非正式、垂直和水平、内部和外部等多种类型,有效沟通是项目成功的关键。 #### 干系人权力/利益方格 干系人权力/利益方格是用于分析干系人的重要性和...