Java设计模式选编.ppt

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

职责链模式(Chain of Responsibility)--适用性 1.有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 2.你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 3.可处理一个请求的对象集合应被动态指定。 职责链模式(Chain of Responsibility)--参与者 1.Handler ? 定义一个处理请求的接口。 ? (可选)实现后继链。 2.ConcreteHandler ? 处理它所负责的请求。 ? 可访问它的后继者。 ? 如果可处理该请求,就处理之;否则将该请求转发给它的后继者。 3.Client ? 向链上的具体处理者(ConcreteHandler)对象提交请求。 职责链模式(Chain of Responsibility)--协作 当客户提交一个请求时,请求沿链传递直至有一个ConcreteHander对象负责处理它。 职责链模式(Chain of Responsibility)--效果 优点: 一、降低了耦合度 1.一个对象无需知道是其它哪一个对象处理其请求 2.接收者和发送者都没有对方明确的信息 3.链中的对象不需知道链的结构 二、增强了给对象指派职责的灵活性 1.可以通过在运行时刻对职责链进行动态的增加和修改,来增加或改变处理一个请求的那些职责 缺点: 1、一个请求没用明确的接收者,那么就不能保证它一定会被处理,一个请求也可能因为该链没有被正确地配置而得不到处理 2、请求处理的遍历,可能导致效率低下 3、扩展性差:Handler接口 职责链模式(Chain of Responsibility)--源码实现 采用职责链完成异常处理功能。 Throwable ?? Exception ???? RuntimeException ??????? NullPointerException Error ???? VirtualMachineError ??????? OutOfMemoryError 职责链模式(Chain of Responsibility)--源码实现 职责链模式(Chain of Responsibility)--源码实现 职责链模式(Chain of Responsibility)--源码实现 职责链模式(Chain of Responsibility)--源码实现 职责链模式(Chain of Responsibility)--源码实现 职责链模式(Chain of Responsibility)--最佳实践 职责链模式: 在职责链模式中,很多对象由每一个对象对其下家的引用而接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。? 设计原则: (1)开关原则:责任链当中的处理节点可以动态地进行扩展。 (2)单一职责原则:每个处理节点功能单一,专注完成自身的处理行为。 职责链模式(Chain of Responsibility)--趣味见解 CHAIN OF RESPONSIBLEITY—晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,纸条就一个接一个的传上去了,糟糕,传到第一排的MM把纸条传给老师了,听说是个老处女呀,快跑! ? 命令模式(Command)--概述 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 命令模式(Command)--类图 命令模式(Command)--适用性 1.抽象出待执行的动作以参数化某对象。 2.在不同的时刻指定、排列和执行请求。 3.支持取消操作。 4.支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍。 5.用构建在原语操作上的高层操作构造一个系统。 命令模式(Command)--参与者 1.Command ? 声明执行操作的接口。 2.ConcreteCommand ? 将一个接收者对象绑定于一个动作。 ? 调用接收者相应的操作,以实现Execute。 3.Client ? 创建一个具体命令对象并设定它的接收者。 4.Invoker ? 要求该命令执行这个请求。 5.Receiver ? 知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者。 命令模式(Command)--效果 1)Command模式将调用操作的对象与知道如何实现该操作的

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档