设计模式——11职责链模式与命令模式ppt课件_第1页
设计模式——11职责链模式与命令模式ppt课件_第2页
设计模式——11职责链模式与命令模式ppt课件_第3页
设计模式——11职责链模式与命令模式ppt课件_第4页
设计模式——11职责链模式与命令模式ppt课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、职责链方式与命令方式Sunny Liu weiliu_china126.内 容行为方式 职责链方式命令方式.行为方式 行为方式Behavioral Pattern是对在不同的对象之间划分责任和算法的笼统化。行为方式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。行为方式分为类的行为方式和对象的行为方式两种:类的行为方式:类的行为方式运用承继关系在几个类之间分配行为。对象的行为方式:对象的行为方式那么运用对象的聚合来分配行为。.行为方式续 行为方式: 职责链方式Chain of Responsibility 命令方式Command 迭代器方式Iterator 中介者方式Mediator

2、备忘录方式Memento 察看者方式Observer 形状方式State 战略方式Strategy 模板方法方式Template Method 访问者方式Visitor .职责链方式 方式动机在职责链方式里,很多对象由每一个对象对其下家的援用而衔接起来构成一条链。恳求在这个链上传送,直到链上的某一个对象决议处置此恳求。发出这个恳求的客户端并不知道链上的哪一个对象最终处置这个恳求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。.职责链方式续 方式定义职责链方式(Chain of Responsibility Pattern):防止恳求发送者与接纳者耦合在一同,让多个对象都有能够

3、接纳恳求,将这些对象衔接成一条链,并且沿着这条链传送恳求,直到有对象处置它为止。职责链方式是一种对象的行为方式。.职责链方式续 方式构造.职责链方式续 参与者Handler:笼统传送者ConcreteHandler:详细传送者Client:客户类.职责链方式续 方式解释一个定义处置恳求(handleRequest)的接口,假设有多个恳求,比如协助恳求、打印恳求或格式化恳求,我们怎样处理呢?.职责链方式续 实例分析实例:下达作战命令 .职责链方式续 实例分析实例:下达作战命令代码实现 .职责链方式续 方式优缺陷降低耦合度 加强了给对象指派职责的灵敏性 不保证被接受 扩展性差 .职责链方式续 方式

4、运用在以下条件下可以运用职责链方式:有多个对象可以处置同一个恳求,哪个对象处置该恳求由运转时辰自动确定。在不明确指定接纳者的情况下,向多个对象中的一个提交一个恳求。可动态指定一组对象处置恳求。.职责链方式续 方式运用Java中的异常处置类似一种职责链方式 Java事件模型(JDK 1.0或更早) 纸牌游戏 职责链方式可以运用于图形用户界面中 .职责链方式续 方式深化纯的与不纯的职责链方式一个纯的职责链方式要求一个详细的处置者对象只能在两个行为中选择一个:一个是承当责任,二是把责任推给下家。不允许出现某一个详细处置者对象在承当了一部分责任后又把责任向下传的情况。在一个纯的职责链方式里面,一个恳求

5、必需被某一个处置者对象所接纳;在一个不纯的职责链方式里面,一个恳求可以最终不被任何接纳端对象所接纳。纯的职责链方式的例子是不容易找到的,普通看到的例子均是不纯的职责链方式的实现。.练 习职责链方式中有哪些参与者,简述其职责。 用职责链写一个专家系统,它一个接一个的尝试不同的处理方法,直到找到某个处理问题的方法为止。要求专家系统可以动态的添加处理方法。测试方法用字符串匹配,但是当匹配以后专家系统必需前往适当类型的ProblemSolver对象。思索下,这里还会用到什么其它的方式? .命令方式 方式动机在软件开发过程中,有时我们需求向某些对象发送恳求,但是不知道 “被恳求的操作 或 “恳求的接受者

6、的任何信息。在面向过程的程序设计言语中,这类通讯是经过回调函数来完成的:在某个地方登记这个函数,然后在后面调用它。在面向对象程序中,command(命令)与回调函数等价,它封装了回调函数。命令方式可以对发送者(sender)和接纳者(receiver)完全解耦(decoupling)。“发送者是恳求操作的对象,“接纳者是接纳恳求并执行某操作的对象。有了“解耦,发送者对接纳者的接口一无所知。在这里,“恳求(request)这个术语指的是要被执行的命令。命令方式还让我们可以对“何时以及“如何完成恳求进展改动。因此,命令方式为我们提供了灵敏性和可扩展性。.命令方式续 方式定义命令方式(Command

7、 Pattern):将一个恳求封装为一个对象,从而使我们可用不同的恳求对客户进展参数化;对恳求排队或者记录恳求日志,以及支持可撤销的操作。命令方式是一种对象行为型方式,其别名为动作(Action)、事务(Transaction)。.命令方式续 方式构造.命令方式续 参与者Command:笼统命令类ConcreteCommand:详细命令类Client:客户运用程序Invoker:调用者Receiver:接纳者.命令方式续 方式解释.命令方式续 实例分析实例一:电视机遥控器 .命令方式续 实例分析实例一:电视机遥控器代码实现 .命令方式续 实例分析实例二:简单计算器 .命令方式续 实例分析实例二

8、:简单计算器 代码实现 .命令方式续 方式优缺陷命令允许恳求的一方和接纳恳求的一方可以独立演化,从而有以下的优点:命令方式使新的命令很容易地被参与到系统里。 允许接纳恳求的一方决议能否要否决恳求。 能较容易地设计一个命令队列。 可以容易地实现对恳求的Undo和Redo。 在需求的情况下,可以较容易地将命令记入日志。 命令方式把恳求一个操作的对象与知道怎样执行一个操作的对象分割开。 命令类与其它任何别的类一样,可以修正和推行。 可以把命令对象聚合在一同,合成为合成命令。比如宏命令便是合成命令的例子。合成命令是组合方式的运用。 由于加进新的详细命令类不影响其它的类,因此添加新的详细命令类很容易。.

9、命令方式续 方式优缺陷命令方式的主要缺陷如下:运用命令方式会导致某些系统有过多的详细命令类。某些系统能够需求几十个,几百个甚至几千个详细命令类,这会使命令方式在这样的系统里变得不实践。.命令方式续 方式运用在下面的情况下该当思索运用命令方式:运用命令方式作为“CallBack在面向对象系统中的替代。 需求在不同的时间指定恳求、将恳求排队。 系统需求支持命令的吊销(undo)。 假设一个系统要将系统中一切的数据更新到日志里,以便在系统解体时,可以根据日志里读回一切的数据更新命令,重新调用execute()方法一条一条执行这些命令,从而恢复系统在解体前所做的数据更新。 一个系统需求支持买卖(Transaction)。 .命令方式续 方式运用Java言

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论