(1.11)--第5.6章-命令模式软件设计与体系结构.ppt
《(1.11)--第5.6章-命令模式软件设计与体系结构.ppt》由会员分享,可在线阅读,更多相关《(1.11)--第5.6章-命令模式软件设计与体系结构.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5.6章命令模式1家电自动化遥控器的API遥控器具有七个可编程的插槽,每个插槽具有对应的开关按钮每个插槽能够控制一个装置遥控器能够兼容未来可能出现的新装置有一组Java类,这些类是由多家厂商开发出来的,用来控制家电装置,例如电灯、风扇、热水器、音响设备等第5.6章命令模式2遥控器遥控器第5.6章命令模式3厂商类厂商类第5.6章命令模式4家电自动化遥控器的API分析目标:创建一组控制遥控器的API,每个插槽能控制一个或一组装置(包括目前的装置和未来可能的装置)。问题:有许多厂商类,每个类有各自的操作。遥控器应该怎样解读按钮被按下的动作?解决方法:采用“命令对象”封装动作请求。当按钮按下时,请命
2、令对象做相关的工作。让“动作的请求者(遥控器)”从“动作的执行者(厂商类之一的实例)”对象中解耦。If(slot1=“Light”)then light.on();else if(slot1=“Hottub”)then hottob.jetsOn();第5.6章命令模式5餐厅订餐6更详细地研究刚才的交互过程。7从从餐餐厅厅到到命命令令模模式式与订餐过程的略微不同之处:客户一般不会直接指定厨师。第5.6章命令模式8连连看第5.6章命令模式9实现命令接口所有的命令对象实现相同的包含一个方法的接口。在餐厅中,此方法为orderUp(),命令对象中惯用名称execute()。public interf
3、ace Command public void execute();只有这一个方法。第5.6章命令模式10实现一个打开电灯的命令根据厂商提供的类,light有两个方法:on()和off()。public class LightOnCommand implements Command Light light;public LightOnCommand(Light light)this.light=light;public void execute()light.on();第5.6章命令模式11使用命令对象(遥控器:调用者)假定遥控器只有一个按钮和对应的插槽 public class Simple
4、RemoteControl()Command slot;public SimpleRemoteControl()public void setCommand(Command command)slot=command;public void buttonWasPressed()slot.execute();设置插槽控制的命令。如果要改变遥控器的行为,可以重复调用这个方法。第5.6章命令模式12遥控器使用的简单测试 public class RemoteControlTest public class static void main(String args)SimpleRemoteControl
5、 remote=new SimpleRemoteControl();Light light=new Light();LightOnCommand lightOn=new LightOnCommand(light);remote.setCommand(lightOn);remote.buttonWasPressed();客户调用者接收者创建一个命令对象命令传给调用者调用者执行命令13命令模式类图命令模式类图第5.6章命令模式14命令模式定义命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象。利用命令来参数化对象遥控器对象并不关心是什么命令对象,只要该命令对象实现了Co
6、mmand接口即可第5.6章命令模式15将命令指定到插槽将遥控器的每个将遥控器的每个插槽,对应到一插槽,对应到一个命令,把遥控个命令,把遥控器变成器变成“调用者调用者”。当按下按钮,。当按下按钮,相应命令对象的相应命令对象的execute()方法就会被调方法就会被调用,使得接收者用,使得接收者的动作被调用。的动作被调用。第5.6章命令模式16public class RemoteControl Command onCommands;Command offCommands;public RemoteControl()onCommands=new Command7;offCommands=new
7、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)onCommandsslot=onCommand;offCommandsslot=offCommand;实实现现遥遥控控器器第5.6章命令模式17 public void onButtonWasPushed(int slot)onCommandss
8、lot.execute();public void offButtonWasPushed(int slot)offCommandsslot.execute();public String toString()StringBuffer stringBuff=new StringBuffer();stringBuff.append(n-Remote Control-n);for(int i=0;i onCommands.length;i+)stringBuff.append(slot +i+onCommandsi.getClass().getName()+offCommandsi.getClass
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 1.11 5.6 命令 模式 软件设计 体系结构
限制150内