第14章 行为型模式(命令模式).ppt

第14章 行为型模式(命令模式).ppt

ID:49096138

大小:3.14 MB

页数:56页

时间:2020-01-31

第14章 行为型模式(命令模式).ppt_第1页
第14章 行为型模式(命令模式).ppt_第2页
第14章 行为型模式(命令模式).ppt_第3页
第14章 行为型模式(命令模式).ppt_第4页
第14章 行为型模式(命令模式).ppt_第5页
资源描述:

《第14章 行为型模式(命令模式).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1命令模式 (Command)2命令模式——意图意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。3命令模式——结构4命令模式——参与者命令(Command)角色:声明了一个给所有具体命令类的抽象接口。具体命令(ConcreteCommand)角色:定义一个接收者和行为之间的弱耦合;实现execute()方法,负责调用接收者的相应操作。execute()方法通常叫做执行方法。方法。5命令模式——参与者请求者(Invoker)角色:负责调用命令对象执行请求,相关的方法叫做行动方法。接收者(Receiver)角色:

2、负责具体实施和执行一个请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法。客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。6生活中的例子Command模式将一个请求封装为一个对象,从而使你可以使用不同的请求对客户进行参数化。用餐时的账单是Command模式的一个例子。服务员接受顾客的点单,把它记在账单上封装。这个点单被排队等待烹饪。注意这里的"账单"是不依赖于菜单的,它可以被不同的顾客使用,因此它可以添入不同的点单项目。7生活中的例子8家电自动化遥控器9如何设计这个遥控器API许多类都具备on()和off()方法,

3、还有一些dim(),setTemperature(),setVolumn(),setDirection()。还有更多厂商类,每个类还会有各式各样的方法遥控器应该知道如何解读按钮被按下的动作,然后发出正确的请求,但是不需要知道这些家电自动化的细节,比如如何打开热水器。10如何设计这个遥控器API命令模式可以将“动作的请求者”从“动作的执行者”对象中解耦,在这个例子中请求者是遥控器,执行者则是厂商类中的相应对象,如热水器等。1112对象村餐厅的角色和职责在餐厅交互模型中,女招待员实现了将“发出请求的对象”和“接受与执行这些请求的对象”分隔开来。对于遥控器API,我们需要分隔开“发出请

4、求的按钮代码”和“执行请求的厂商特定对象”,实现两者的松散耦合。13从餐厅到命令模式14第一个命令对象15实现一个打开电灯的命令16使用命令对象17遥控器使用的简单测试18定义命令模式命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令对象将动作和接收者包进对象中,这个对象只须具备execute()方法即可。19定义命令模式2021将命令指定到插槽22实现遥控器23实现遥控器24实现命令25实现命令26逐步测试遥控器27逐步测试遥控器28逐步测试遥控器29逐步测试遥控器3031大功告成撤销功能一键全开32撤销功能撤销功

5、能:将上一动作逆转,如上一动作为开灯,则撤销功能则为关灯。33撤销功能34撤销功能35撤销功能36撤销功能37驱动程序38驱动程序39使用状态实现撤销40使用状态实现撤销41使用状态实现撤销42加入撤销到吊扇的命令类43准备测试天花板吊扇44准备测试天花板吊扇45测试天花板吊扇46Party模式47Party模式48Party模式——实现步骤49Party模式——实现步骤50Party模式——实现步骤51命令模式的更多用途队列请求:可以将运算块打包,然后将它传来传去,就像是一个对象一样。日志请求:利用命令模式,将历史记录储存在磁盘中。一旦系统死机,我们就可以将命令对象重新加载,并

6、成批地依次调用这些对象的execute()方法。52命令模式的效果及实现要点Command模式的根本目的在于将“行为请求者”与“行为实现者”解耦,在面向对象语言中,常见的实现手段是“将行为抽象为对象”。实现Command接口的具体命令对象ConcreteCommand有时候根据需要可能会保存一些额外的状态信息。通过使用Compmosite模式,可以将多个命令封装为一个“复合命令”MacroCommand。53命令模式的效果及实现要点Command模式与C#中的Delegate有些类似。但两者定义行为接口的规范有所区别:Command以面向对象中的“接口-实现”来定义行为接口规范,

7、更严格,更符合抽象原则;Delegate以函数签名来定义行为接口规范,更灵活,但抽象能力比较弱。使用命令模式会导致某些系统有过多的具体命令类。某些系统可能需要几十个,几百个甚至几千个具体命令类,这会使命令模式在这样的系统里变得不实际。54命令模式的适用性在下面的情况下应当考虑使用命令模式:1.使用命令模式作为"CallBack"在面向对象系统中的替代。"CallBack"讲的便是先将一个函数登记上,然后在以后调用此函数。2.需要在不同的时间指定请求、将请求排队。一个命令对象和原先

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。