职责链模式.

Slides:



Advertisements
Similar presentations
模板的使用 教育学 江西教育学院教育系 冯芳 2012 - 10. 第二章 教育学的产生和发展 第一节 教育学的研究对象和任务 第二节 教育学的产生与发展 第三节 学习教育学的意义与方法.
Advertisements

用 藥 安 全 用 藥 安 全 護 理 師 張 嘉 芬. 前 言 前 言 正確用藥的方法 藥袋上的秘辛 為了減少重大疾病或是醫療處理、 用藥不當的相關事件發生。
阿尔伯特亲王 阿尔伯特亲王纪念碑 维多利亚女王夫妇 维多利亚女王一家 建造水晶宫 水晶宫初建时的照片.
工程管理部业务培训教程 运营管理中心 2015年07月24日.
第16章 代理模式 Website:
第十課 第九味目錄 徐國能 課文 注釋 問題與討論.
党的十八届四中全会 依法治国精神解读. 党的十八届四中全会 依法治国精神解读 一、十八届四中全会概况 中国共产党第十八届中央委员会第四次全体会议,于2014年10月20日至23日在北京举行。 全会审议通过了《中共中央关于全面推进依法治国若干重大问题的决定》。
花蓮市校長聯席會議 海星中學成果分享 報告人:林福樹 時 間:2005年7月7日(星期四).
宿迁质监局学习型党组织创建情况汇报 二〇一四年十一月.
证券市场法律制度与监督管理 作者:张学亮.
C语言程序设计 李伟光.
全面推进普法工作 促进红塔健康发展 ——红塔集团“六五”普法工作汇报
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
派對慶祝 指導老師:黃瑞勤老師 S.3A 組長:葉慧敏(40) 組員:尹國青(30) 麥家欣(26) 利昭雯(16)
我怀念的乡村记忆 陈秀华 社会工作0841.
2014年人事行政前台 年 终 总 结 报 告 总结人:汪婷婷 时间:2014年1月5日.
沟通技巧 主讲:涂育俊.
增强危机意识 凝聚攻坚合力 2014年 3月20日 第二版 LIKUANGSHICHUANG 栗矿公司召开党的群众路线教育实践活动动员会
專題報告製作 胡舉軍 助理教授 資訊管理學系 樹德科技大學
采矿作业部党总支部 会议汇报材料 2012年3月.
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
MVC Servlet与MVC设计模式.
评价是为了促进 学生发展的评价。. 评价是为了促进 学生发展的评价。 语言有温度,字词知冷暖.
热烈欢迎兼职档案员 参加档案业务培训
第7章 行政监督.
第一章 面向对象程序设计.
組別:第一組 組員: 特一乙 黃芳翊 特一乙 黃彩華 特一乙 林佑庭 會計一 陳信捷 電子一 游博鈞 電機一 施定國 特四甲 李雅植
氣候變遷對南台灣降雨造成之影響 研究背景 結果與討論 研究方法 結論 朱振豪1 、彭康豪1 、莊煌甲1 、邱俊彥2,* 研究目的
以信息化手段全方位促进学校特色建设 ————青岛酒店管理职业技术学院 1.
我的過動人生 圖.文: 吳沁婕.
年度工作报告 后勤处 汇报人:刘仲平
類別與物件 Class & Object.
第八章 分析與設計階段 – 物件導向設計(OOD)
西南林业大学 网络办公系统 云南新克软件技术有限责任公司.
第9章 单例模式 Website:
世界看遍 终归回到纯水岸 波托菲诺08年终总结. 世界看遍 终归回到纯水岸 波托菲诺08年终总结.
外观模式.
对网络环境下高校图书馆 信息资源建设的讨论
Design Pattern (3) 设计模式(3) Institute of Computer Software 2018/11/8
例外處理(Exception Handling)
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
创建型设计模式.
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
Java语言程序设计 第五部分 Java异常处理.
第9章 類別圖與物件圖 9-1 類別圖與物件圖的基礎 9-2 類別圖的符號 9-3 類別關係 9-4 物件圖 9-5 繪製類別圖與物件圖
组合模式.
异常及处理.
C/C++/Java 哪些值不是头等程序对象
简单工厂模式.
第14章 外观模式 Deng Song
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第12章 组合模式 Deng Song
實驗九:延續實驗八, 製作一個完整音樂播放器
第7章 异常处理.
第二章 Java语法基础.
第7章 建造者模式 Deng Song
辅导课程十一.
第二章 Java基本语法 讲师:复凡.
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
論語 卷八 泰伯 輔二甲 S 顏巧俐 指導老師:胡瀚平.
Java程序设计 第17章 异常和断言.
喜雨亭記 國二甲 S 陳姿婷.
數學遊戲二 大象轉彎.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
方格紙上畫正方形.
第2章 Java语言基础.
判斷(選擇性敘述) if if else else if 條件運算子.
技專校院多元入學管道 國立臺北科技大學 教務處 涂雅筑.
第二章 Java基础语法 北京传智播客教育
Summary
Presentation transcript:

职责链模式

教学内容 职责链模式 模式动机与定义 模式结构与分析 模式实例与解析 模式效果与应用 模式扩展

职责链模式 模式动机

职责链模式 模式动机 职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。 链上的每一个对象都是请求处理者,职责链模式可以将请求的处理者组织成一条链,并使请求沿着链传递,由链上的处理者对请求进行相应的处理,客户端无须关心请求的处理细节以及请求的传递,只需将请求发送到链上即可,将请求的发送者和请求的处理者解耦。这就是职责链模式的模式动机。

职责链模式 模式定义 职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。由于英文翻译的不同,职责链模式又称为责任链模式,它是一种对象行为型模式。

职责链模式 模式定义 Chain of Responsibility Pattern: Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it. Frequency of use: medium low

职责链模式 模式结构

职责链模式 模式结构 职责链模式包含如下角色: Handler: 抽象处理者 ConcreteHandler: 具体处理者 Client: 客户类

职责链模式 模式分析 在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。 请求在这条链上传递,直到链上的某一个对象处理此请求为止。 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。

职责链模式 模式分析 典型的抽象处理者代码: public abstract class Handler { protected Handler successor; public void setSuccessor(Handler successor) this.successor=successor; } public abstract void handleRequest(String request);

职责链模式 模式分析 典型的具体处理者代码: public class ConcreteHandler extends Handler { public void handleRequest(String request) if(请求request满足条件) ...... //处理请求; } else this.successor.handleRequest(request); //转发请求

职责链模式 职责链模式实例与解析 实例:审批假条 某OA系统需要提供一个假条审批的模块,如果员工请假天数小于3天,主任可以审批该假条;如果员工请假天数大于等于3天,小于10天,经理可以审批;如果员工请假天数大于等于10天,小于30天,总经理可以审批;如果超过30天,总经理也不能审批,提示相应的拒绝信息。

职责链模式 职责链模式实例与解析 实例:审批假条

职责链模式 模式优缺点 职责链模式的优点 降低耦合度 可简化对象的相互连接 增强给对象指派职责的灵活性 增加新的请求处理类很方便

职责链模式 模式优缺点 职责链模式的缺点 不能保证请求一定被接收。 系统性能将受到一定影响,而且在进行代码调试时不太方便;可能会造成循环调用。

职责链模式 模式适用环境 在以下情况下可以使用职责链模式: 有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 可动态指定一组对象处理请求。

职责链模式 模式应用 (1) Java中的异常处理机制 try { …… } catch(ArrayIndexOutOfBoundsException e1) catch(ArithmeticException e2) catch(IOException e3) finally

职责链模式 模式应用 (2) 早期的Java AWT事件模型(JDK 1.0及更早) :事件浮升(Event Bubbling)机制。 JavaScript事件浮升机制:

职责链模式 模式扩展 纯与不纯的职责链模式 一个纯的职责链模式要求一个具体处理者对象只能在两个行为中选择一个:一个是承担责任,另一个是把责任推给下家。不允许出现某一个具体处理者对象在承担了一部分责任后又将责任向下传的情况。 在一个纯的职责链模式里面,一个请求必须被某一个处理者对象所接收;在一个不纯的职责链模式里面,一个请求可以最终不被任何接收端对象所接收。

小结 职责链模式可以避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。它是一种对象行为型模式。 职责链模式包含两个角色:抽象处理者定义了一个处理请求的接口;具体处理者是抽象处理者的子类,它可以处理用户请求。

本章小结 在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。 职责链模式的主要优点在于可以降低系统的耦合度,简化对象的相互连接,同时增强给对象指派职责的灵活性,增加新的请求处理类也很方便;其主要缺点在于不能保证请求一定被接收,且对于比较长的职责链,请求的处理可能涉及到多个处理对象,系统性能将受到一定影响,而且在进行代码调试时不太方便。 职责链模式适用情况包括:有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定;在不明确指定接收者的情况下,向多个对象中的一个提交一个请求;可动态指定一组对象处理请求。

END Thanks!