设计模式职责链模式Chain of Responsibility.pptx

设计模式职责链模式Chain of Responsibility.pptx

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式(Design Pattern);问题(Problem);问题(Problem);问题(Problem);问题(Problem);主要内容;模式动机 模式名称:职责链模式(Chain of Responsibility) 职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。;模式动机 链上的每一个对象都是请求处理者,职责链模式可以将请求的处理者组织成一条链,并使请求沿着链传递,由链上的处理者对请求进行相应的处理。 客户端无须关心请求的处理细节以及请求的传递,只需将请求发送到链上即可,将请求的发送者和请求的处理者解耦。这就是职责链模式的模式动机。;职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);职责链模式(Chain of Responsibility);模式结构 ;参与者 Handler: 抽象处理者 ConcreteHandler: 具体处理者 Client: 客户类;职责链模式(Chain of Responsibility);职责链模式和状态模式比较 职责链模式:当客户提交一个请求时,请求是沿链传递直至有一个ConcreteHander对象负责处理它。链中的对象自己并不知道链的结构,在运行时确定。结果是职责链可简化对象的相互连接,它们仅需保持一个指向其后继者的引用或指针,而不需要保持它所有的候选接受者。这也就大大降低了耦合度了。也就是说,我们可以随时地增加或修改处理一个请求的结构。增强了给对象指派职责的灵活性。;职责链模式和状态模式比较 状态模式:状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。定义新的子类可以很容易地增加新的状态和转换。这样做的目的是为了消除庞大的条件分支语句。状态模式通过把各种状态转移逻辑分布到State的子类之间,来减少相互间的依赖。;职责链模式和状态模式比较 请假例子,找班长请假,班长只能请半天,否则班长向老师申请,如果请假时间超过一周,老师要跟副年级主任请示,如果请假超出一个月,主任要跟年级正主任请示,然后被批准,或不被批准。 问题:如果班长请假了,用状态模式,其他学生都请不了假了,也就是如果状态模式中任何一环缺失的话,这个事件都无法进行下去。;职责链模式和状态模式比较 职责链模式的链式在客户端连接的,也就是说,如果我们请假,请假制度一旦改变,比如说我们不需要班长,或者是先请求老师后直接请求主任或者中间多了一个环节,都是很容易实现的,所以,职责链模式要比状态模式灵活很多。;职责链模式和状态模式比较 职责链模式与状态模式的最大的不同是设置自己的下一级的问题上,状态模式是在类的设计阶段就定好的,不能在客户端改变,而职责链的下一级是在客户端自己来确定的。 职责链模式注重职责的传递,由客户端配置;状态模式注重对象状态的转换,转换过程对客户端是透明的。;职责链模式的优点如下 降低耦合度 可简化对象的相互连接 增强给对象指派职责的灵活性 增加新的请求处理类很方便 ;职责链模式的缺点如下 不能保证请求一定被接收。 系统性能将受到一定影响,而且在进行代码调试时不太方便;可能会造成循环调用。;模式使用 在以下情况下可以使用职责链模式: 有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 可动态指定一组对象处理请求;模式应用 异常处理机制;纯与不纯的职责链模式 一个纯的职责链模式要求一个具体处理者对象只能在两个行为中选择一个:一个是承担责任,另一个是把责任推给下家。不允许出现某一个具体处理者对象在承担了一部分责任后又将责任向下传的情况。 在一个纯的职责链模式里面,一个请求必须被某一个处理者对象所接收;在一个不纯的职责链模式里面,一个请求可以最终不被任何接收端对象所接收。 ;Thank You !

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档