ImageVerifierCode 换一换
格式:PPT , 页数:31 ,大小:172.50KB ,
资源ID:10527898      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10527898.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(深入浅出设计模式之命令模式.ppt)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

深入浅出设计模式之命令模式.ppt

1、命令模式,封装调用,一个例子,public void actionPerformed(ActionEvent e) Object obj = e.getSource();if(obj = mnuOpen) fileOpen(); /open fileif (obj = mnuExit) exitClicked(); /exit from programif (obj = btnRed) redClicked(); /turn red private void exitClicked() System.exit(0); private void fileOpen() FileDialog fDl

2、g = new FileDialog(this, “Open a file“,FileDialog.LOAD);fDlg.show(); private void redClicked() p.setBackground(Color.red); ,上述程序设计,当按钮和菜单项不多的时候工作良好,但按钮和菜单项多时,就不好办了。,public interface Command public void Execute(); public void actionPerformed(ActionEvent e) Command cmd = (Command)e.getSource();cmd.Exe

3、cute(); 这样,我们需要给每一个对象提供一个执行的方法。,命令模式,these program objects should be completelyseparate from each other and should not have to know how other objects work. The user interface receives a command and tells a Command object to carry out whatever duties it has been instructed to do. The UI does not and

4、should not need to know what tasks will be executed.,命令模式,程序对象应该彻底的彼此解耦,不需要知道其他的对象是如何工作的。用户界面接收到命令然后告诉命令对象执行设定的工作,用户界面不知道也不应该知道命令是如何执行的。,命令的发送者,命令的接受者,命令对象,解耦了命令的发送者和命令的接受者,饭店用餐,顾客点了饭菜,形成一个订单,侍者将订单交给厨房,厨房根据订单配菜。侍者无需知道订单的内容。饭菜的制作者和饭菜的消费者完全分开,彼此无需直接联系。,遥控器的例子,遥控器需要控制每一个电器的动作,如电灯,电扇,电视机,同是开,动作不一样。 我们设置

5、命令接口public interface Commandpublic void execute();,public class LightOnCommand implements Command Light light;public LightOnCommand(Light light) this.light = light;public void execute() light.on(); ,命令的接收对象,命令接收对象自己执行,命令对象,接收对象 实现了命令接口,Command,public class SimpleRemoteControl Command slot; public Si

6、mpleRemoteControl() public void setCommand(Command command) slot = command; public void buttonWasPressed() slot.execute(); ,遥控器测试,public class RemoteControlTest public static void main(String args) SimpleRemoteControl remote = new SimpleRemoteControl();Light light = new Light();LightOnCommand lightO

7、n = new LightOnCommand(light);remote.setCommand(lightOn);remote.buttonWasPressed(); ,命令模式,将请求封装成对象,使用不同的请求、队列或日志来参数化其他对象。命令模式支持可撤销操作。 将请求封装成对象,什么对象? 对象将接受者和动作包在内部,只有一个execute接口,外部调用这个接口,不知会进行什么样的操作。,多功能遥控器,需要控制多个设备,每一个设备都有开关按钮 需要一个命令组,来控制设备组:起居室灯,厨房灯,吊扇,车库门,音响,等,public class RemoteControl Command on

8、Commands;Command offCommands;public RemoteControl() onCommands = new Command7;offCommands = new Command7;Command noCommand = new NoCommand();for (int i = 0; i 7; i+) onCommandsi = noCommand;offCommandsi = noCommand;,public void setCommand(int slot, Command onCommand, Command offCommand) onCommandssl

9、ot = onCommand;offCommandsslot = offCommand; public void onButtonWasPushed(int slot) onCommandsslot.execute(); public void offButtonWasPushed(int slot) offCommandsslot.execute();,public class LightOffCommand implements Command ?,NoCommand,它是一个空对象,称监视对象,避免了判断if(onCommandslot != null)onCommandslot.exe

10、cute();,撤销命令,有时应该允许后悔,允许命令撤销。 public interface Command public void execute();public void undo(); ,public class LightOffCommand implements Command Light light;public LightOffCommand(Light light) this.light = light;public void execute() light.off();public void undo() light.on(); ,使用撤销命令的遥控器,代码,测试,代码,使

11、用状态实现撤销,吊扇代码,加入撤销到吊扇的命令类,代码 其它几个low,medium,off.如何实现。,测试吊扇类,代码,遥控器的party模式,产生一个新的命令,可以让所有设备打开。 public class MacroCommand implements Command Command commands; public MacroCommand(Command commands) mands = commands; public void execute() for (int i = 0; i commands.length; i+) commandsi.execute(); public void undo() for (int i = 0; i commands.length; i+) commandsi.undo(); ,测试宏命令,代码,命令模式的优点和缺点:,优点: 降低Client和命令接受者的耦合,是命令请求和命令执行的对象分割 便于修改和扩张 便于聚合多个命令 缺点:造成出现过多的具体命令类,太多文件。,命令模式,将命令发送者和命令解释者解耦 两者的联系通过命令对象来中介的 命令对象包含接受者和execute方法 命令可以被撤销 宏命令是一种简单的命令,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报