第4章 命令模式

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 命令模式
设计模式
回顾
掌握工厂方法模式,使用继承把对象的创建封装 掌握抽象工厂模式,使用对象组合进行对象创建封装 比较工厂模式的设计特点 利用模式和原则设计简单应用程序
2
设计模式
目标
掌握命令模式发出请求对象和执行请求的对象解耦 掌握命令模式的结构与使用 学会使用宏命令,调用多个命令 利用模式和原则设计简单应用程序
setCommand( )
output
A橱师
Invoker女招待
Command.execute( )
A橱师做汉堡 咖啡
Receiver A橱师
4
设计模式
分析
客户创建一个命令对象 客户利用setCommand(),将命令对象存储在 Invoker中 客户要求Invoker执行命令
命令模式:将”请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象 以及支持可撤消的操作。
15
设计模式
命令接口中撤消方法 命令可以支持撤消,其做法是实现一个undo()方法 来回到execute()被执行前的状态
public interface Command{ public void execute(); pulic void undo(); }
举例: 设计遥控器控制天花板上的吊扇,它有多种转动速度,当然也允许被关闭。 假设吊扇速度:high、medium、low 、off
public void execute() { receiver.action(); }
Receiver
ConcreteCommand
execute( ) undo( )
5
action()
设计模式
命令模式实现餐厅
6
设计模式
代码分析-1
7
设计模式
代码分析-2
8
设计模式
代码分析-3
9
设计模式
代码分析-4
①Invoker的请求(Receiver+调用方法)封装到命令对象中ConcreteCommand; ②利用命令对象来参数化Invoker实例,就可以让命令对象调用封装“请求”的方法
Client
Invoker
setCommand()
<<interface>> Command execute( ) undo( )
16
设计模式
代码分析-1
接收者
17
设计模式
代码分析-2
不同速度具体命令
空命令
命令接口
18
设计模式
代码分析-3
请求者
19
设计模式
运行
20
设计模式
Байду номын сангаас 总结
掌握命令模式发出请求对象和执行请求的对象解耦 掌握命令模式的结构与使用 学会使用宏命令,调用多个命令 利用模式和原则设计简单应用程序
3
设计模式
命令模式模拟过程
订单(Order)
Cheese汉堡 咖啡
takeOrder( )
从餐厅到命令模式
顾客 女招待 将订单看成命令对象
往命令里对象放什么?Client
A橱师
Create 烹饪行为
orderUp( )
execute( )
Command 命令:A橱师做汉堡和 订单 咖啡 (命令对象) Command 订单 (命令对象)
21
设计模式
10
设计模式
代码分析-5
11
设计模式
代码分析-6
12
设计模式
运行
13
设计模式
UML类
14
设计模式
模式结构
命令模式包含四种角色
①接收者Receiver:是一个类的实例,负责执行与请求相关的操作; ②命令接口Command:封装请求的若干个方法; ③具体命令ConcreteCommand:实现命令接口类的实例; ④请求者Invoker:是一个包含Command接口变量的类的实例。请求者负责 调用具体命令,让具体命令执行那些封装了请求的方法。
相关文档
最新文档