软件设计模式之command模式.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
The Command Pattern (命令模式) 命令模式要解决的问题 有时需要向对象发送请求,但是不知道 “被请求的操作” 或 “请求的接受者” 的任何信息。 在面向过程的程序设计语言中,这类通信是通过回调函数来完成的:在某个地方登记这个函数,然后在后面调用它。在面向对象程序中,command(命令)与回调函数等价,它封装了回调函数。 演示实例 命令模式的好处 Command模式使请求本身成为一个对象。这个对象和其它对象一样可以被存储和四处传递。这种模式的关键在于一个Command接口:它声明了一个接口,用于执行操作。 Commad模式是一种对象行为模式,它可以使发送者和接收者完全解耦。 Command模式还让我们可以对 何时 以及 如何 完成请求进行改变。因此,Command模式为我们提供了灵活性和可扩展性。 实例背景 假设现在有一只风扇(Fan)和一盏灯(Light)。 有一个开关Switch,它可以对任一个对象(风扇、灯)进行 “开” 和 “关” 的操作。 问题是:开关Switch在墙上,与对象接线不方便,而且每次换一个对象都得重新接线,麻烦! 问题? 可行的解决方案 可行的解决方案 这样一来,每次我要开电扇时就只要把电扇的插头插到插座上,然后按下开关即可。同样,如果我不想用电扇,而想开电灯了,只需把电扇的插头拔掉,将电灯的插头插到插座上即可。这样便实现了一个开关控制多个对象。 好处 开关并不需要知道它控制的是谁,它只要执行开或关即可。 扩展性好:如果又来了一只电饭煲,同样只需把它接到插座上即可。 坏处 如果现在是晚上,我必须开着灯看书,但是天气实在太热了,又想用电扇,怎么办?? 救星!! 绝望 插座只有一个!! 要是有一个插座模具该多好啊,那样我想要插座时,只好用它去做一个出来就行了。 终于… 电扇类 电灯类 Command接口 public interface Command { public abstract void execute( ); } 具体的Command类-----FanOnCommand 类 public class FanOnCommand implements Command { private Fan myFan; public FanOnCommand ( Fan F) { myFan = F; } public void execute( ) { myFan . startRotate( ); } } 具体的Command类-----FanOffCommand 类 class FanOffCommand implements Command { private Fan myFan; public FanOffCommand ( Fan F) { myFan = F; } public void execute( ) { myFan.stopRotate( ); } } 具体的Command类-----LightOnCommand类 class LightOnCommand implements Command { private Light myLight; public LightOnCommand ( Light L) { myLight = L; } public void execute( ) { myLight.turnOn( ); } } 具体的Command类-----LightOffCommand类 class LightOffCommand implements Command { private Light myLight; public LightOffCommand ( Light L) { myLight = L; } public void execute( ) { myLight . turnOff( ); } } Switch类 public class Switch { private Command upCommand, downCommand; public Switch( Command Up, Command Down) { upCommand = Up; downCommand

文档评论(0)

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

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

1亿VIP精品文档

相关文档