17 C#设计模式-命模式.ppt
《17 C#设计模式-命模式.ppt》由会员分享,可在线阅读,更多相关《17 C#设计模式-命模式.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、www.ChinaSA.infoDDesign esign P Patternsatterns命令模式命令模式命令模式命令模式刘刘 伟伟(Sunny)weiliu_www.ChinaSA.info大纲w命令模式概述w命令模式的结构与实现w命令模式的应用实例w实现命令队列w记录请求日志w实现撤销操作w宏命令w命令模式的优缺点与适用环境很多软件都能够自定义快捷键很多软件都能够自定义快捷键www.ChinaSA.info命令模式概述w开关与电灯、排气扇示意图www.ChinaSA.info命令模式概述w分析现实生活现实生活相同的开关可以通过不同的电线来控制不同的电器开关 请求发送者电灯 请求的最终接
2、收者和处理者开关和电灯之间并不存在直接耦合关系,它们通过电线连接在一起,使用不同的电线可以连接不同的请求接收者www.ChinaSA.info命令模式概述w分析软件开发软件开发按钮 请求发送者事件处理类 请求的最终接收者和处理者发送者与接收者之间引入了新的命令对象(类似电线),将发送者的请求封装在命令对象中,再通过命令对象来调用接收者的方法相同的按钮可以对应不同的事件处理类www.ChinaSA.info命令模式概述w动机将请求发送者和接收者将请求发送者和接收者完全解耦完全解耦发送者与接收者之间发送者与接收者之间没有直接引用关系没有直接引用关系发送请求的对象发送请求的对象只需要知道如何发送请求
3、,而不必知只需要知道如何发送请求,而不必知道如何完成请求道如何完成请求命令模式命令模式www.ChinaSA.info命令模式概述w命令模式的定义对象行为型对象行为型模式模式命命令令模模式式:将将一一个个请请求求封封装装为为一一个个对对象象,从而让你可以用不同的请求对对客客户户进进行行参参数数化化,对对请请求求排排队队或者记记录录请请求求日日志志,以及支持可撤支持可撤销销的操作的操作。Command Pattern:Encapsulate a request as an object,thereby letting you parameterize clients with different
4、 requests,queue or log requests,and support undoable operations.www.ChinaSA.info命令模式概述w命令模式的定义别名为别名为动作动作(Action)模式或模式或事务事务(Transaction)模式模式“用不同的请求对客户进行参数化用不同的请求对客户进行参数化”“对请求排队对请求排队”“记录请求日志记录请求日志”“支持可撤销操作支持可撤销操作”www.ChinaSA.info命令模式的结构与实现w命令模式的结构www.ChinaSA.info命令模式的结构与实现w命令模式的结构命令模式包含以下命令模式包含以下4个角色:
5、个角色:Command(抽象命令类)ConcreteCommand(具体命令类)Invoker(调用者)Receiver(接收者)www.ChinaSA.info命令模式的结构与实现w命令模式的实现命令模式的本质是命令模式的本质是对请求进行封装对请求进行封装一个请求对应于一个命令一个请求对应于一个命令,将发出命令的责任和执行,将发出命令的责任和执行命令的责任分开命令的责任分开命令模式命令模式允许请求的一方和接收的一方独立开来允许请求的一方和接收的一方独立开来,使,使得得请求的一方不必知道接收请求的一方的接口请求的一方不必知道接收请求的一方的接口,更不,更不必知道必知道请求如何被接收请求如何被接
6、收、操作是否被执行操作是否被执行、何时被执何时被执行行,以及是,以及是怎么被执行的怎么被执行的www.ChinaSA.info命令模式的结构与实现w命令模式的实现典型的抽象命令类代码:典型的抽象命令类代码:abstract class Command public abstract void Execute();www.ChinaSA.info命令模式的结构与实现w命令模式的实现典型的调用者(请求发送者)类代码:典型的调用者(请求发送者)类代码:class Invoker private Command command;/构造注入构造注入 public Invoker(Command comm
7、and)mand=command;public Command Command get return command;/设值设值注入注入 set command=value;/业务业务方法,用于方法,用于调调用命令用命令类类的方法的方法 public void Call()command.Execute();www.ChinaSA.info命令模式的结构与实现w命令模式的实现典型的具体命令类代码:典型的具体命令类代码:class ConcreteCommand:Commandprivate Receiver receiver;/维维持一个持一个对请对请求接收者求接收者对对象的引用象的引用pub
8、lic override void Execute()receiver.Action();/调调用用请请求接收者的求接收者的业务处业务处理方法理方法Action()www.ChinaSA.info命令模式的结构与实现w命令模式的实现典型的请求接收者类代码:典型的请求接收者类代码:class Receiverpublic void Action()/具体操作www.ChinaSA.info命令模式的应用实例w实例说明为了用户使用方便,某系统提供了一系列功能键,用户可以自定义功能 键 的 功 能,例 如 功 能 键 FunctionButton可 以 用 于 退 出 系 统(由SystemExit
9、Class类 来 实 现),也 可 以 用 于 显 示 帮 助 文 档(由DisplayHelpClass类来实现)。用户可以通过修改配置文件来改变功能键的用途,现使用命令模式来设计该系统,使得功能键类与功能类之间解耦,可为同一个功能键设置不同的功能。www.ChinaSA.info命令模式的应用实例w实例类图功能键设置结构图功能键设置结构图www.ChinaSA.info命令模式的应用实例w实例代码(1)FunctionButton:功能键类,充当请求调用者(请求发送者):功能键类,充当请求调用者(请求发送者)(2)Command:抽象命令类:抽象命令类(3)ExitCommand:退出命令
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 17 C#设计模式-命模式 C# 设计 模式
限制150内