15-Chain Of Responsibility.pdf

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
15-Chain Of Responsibility

Design Patterns 宋 杰 Song Jie 东北大学软件学院 Software College, Northeastern University 15. Chain Of Responsibility Pattern Intent 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. The chain of responsibility could be a line, a ring, a hierarchy or a graph. 在责任链模式里,很多对象由每一个对象对其下家的引 用而连接起来形成一条链。请求在这个链上传递,直到 链上的某一个对象决定处理此请求。发出这个请求的客 户端并不知道链上的哪一个对象最终处理这个请求,这 使得系统可以在不影响客户端的情况下动态地重新组织 链和分配责任。 Example: Cash Machine +storeCoins() interface CashMachine Client Example: Rank in military Structure 继任者继承人 Participants Handler Defines an interface for handling requests. (Optional) Implements the successor link. ConcreteHandler Handles requests it is responsible for. If the ConcreteHandler can handle the request, it does so; otherwise it forwards the request to its successor. Client Initiates the request to a ConcreteHandler object on the chain. Collaborations When a client issues a request, the request propagates along the chain until a ConcreteHandler object takes responsibility for handling it. Consequences -benefits Reduced coupling, (nothing need to know). The client is free from knowing which object handles a request. The client only has to know that a request will be handled appropriately. Both the receiver and the sender have no explicit knowledge of each other. An handler in the chain doesnt have to know about the chains structure. Added flexibility in assigning responsibilities to objects. You can combine this with subclassing to specialize handlers statically. You can add or change responsibilities for handling a request by adding to or otherwise changing the chain at run-time. Consequences-drawbacks Receipt isnt guaranteed. Since a request has no explicit receiver, theres no guarantee itll be handled The request can fall off the end of the chain without ever being handled. A request ca

文档评论(0)

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

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

1亿VIP精品文档

相关文档