第14章 学生生病了:责任链模式.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章 学生生病了:责任链模式 14.1 学生生病了 14.2 模式定义 14.3 普通抽象化分析 14.4 普通抽象化实现 14.5 责任链模式分析方法 14.6 请假流程的责任链模式实现 14.7 设计原则 14.8 使用场合 14.9 本章要点 14.1 学生生病了 这个小学生生病了,看看请假的过程吧,如图14-1所示。 14.2 模式定义 责任链模式涉及的角色如下。 (1)抽象处理者角色(Handler):定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回下家的引用。这个角色通常由一个Java抽象类或Java接口实现。 (2)具体处理者角色(ConcreteHandler):具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。 14.3 普通抽象化分析 14.3.1 学生请假流程分析 来一起分析学生请假的流程。 (1)小学生生病了,发出请假请求。 (2)请假请求首先发给班长,看看班长能否处理。如果班长能够处理,则由班长批准请假;否则,交给老师处理。 (3)老师接到学生请假请求,首先判断病情是否严重。如果是一般的小病,则老师批准请假;否则,交给校长处理。 (4)校长接到学生请假请求,核实属实,则给予请假批准。 14.3.2 抽象化静态建模 在一般情况下是如何分析解决这样的问题的。如图14-2所示,为一般情况学生请假关系类图。 14.4 普通抽象化实现 14.4.1 学生请假实现 1.学生接口——IStudent 2.学生实现——Student 14.4.2 创建抽象请假消息处理者 1.抽象处理者接口——IHandler 2.抽象处理者——AbstractHandler 14.4.3 请假处理者具体实现 1.班长——SquadLeaderHandler 2.老师——TeacherHandler 3.校长——SchoolMasterHandler 14.4.4 客户端测试 14.4.5 如何面对变化 14.4.6 使用外观封装变化部分 14.5 责任链模式分析方法 14.5.1 如何实现消息传递 责任链的实现关键在于消息在链条上的传递,需要做到以下几点内容: (1)在处理者中要含有链条中下一节点的引用。在抽象处理者AbstractHandler中增加一个IHandler类型的私有属性,用于保存对下家处理者的引用。 (2)每一个消息处理者都应该含有一个处理消息的标记位,用来标识当前处理者含有处理消息的级别。 (3)最后一点,也是最重要的一点就是,处理消息的方法需要链条化。 14.5.2 责任链模式静态建模 根据上面的内容修改完善静态类图,如图14-6所示。 14.6 请假流程的责任链模式实现 14.6.1 抽象化修改 1.在IHandler中增加下一个处理者 2.在AbstractHandler中存储下一个处理者引用,并进行消息传递处理 14.6.2 完善具体消息处理者 1.班长——SquadLeaderHandler 2.老师——TeacherHandler 3.校长——SchoolMasterHandler 14.6.3 在外观中设置消息处理责任链 14.6.4 客户端测试 14.7 设计原则 1.“开-闭”原则 2.单一职责原则 14.8 使用场合 (1)有多个对象处理同一个请求,具体由哪一个来处理还不确定,只有在运行时才能确定哪个对象处理的情况。 (2)消息具有多个接收者,而接收对象又是不明确的情况。只需要向其中的一个对象发出消息,由其内部具体处理。 (3)同一个消息的多个处理对象可能会动态增加或者减少,需要动态地指定的情况。 14.8 使用场合 通过责任链模式的静态类图,加深对责任链模式的理解,如图14-7所示。 14.8 使用场合 1.责任链模式中的角色 2.扩展1:Java SDK中的责任链模式 3.扩展2:相关的设计模式 14.9 本章要点 1.责任链模式 2.设计原则 3.模式中的角色 4.相关的设计模式 5.使用场合

文档评论(0)

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

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

1亿VIP精品文档

相关文档