11第11章-行为型模式PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
命令模式
模式动机
✓ 在软件设计中,我们经常需要向某些对象发送请求,但 是并不知道请求的接收者是谁,也不知道被请求的操作 是哪个,我们只需在程序运行时指定具体的请求接收者 即可,此时,可以使用命令模式来进行设计,使得请求 发送者与请求接收者消除彼此之间的耦合,让对象之间 的调用关系更加灵活。
命令模式
命令模式
模式分析
✓ 典型的调用者代码:
public class Invoker {
private Command command;
public Invoker(Command command) {
this.command=command; }
public void setCommand(Command command) {
第11章 行为型模式
Sunny Liu
教学内容
行为型模式 命令模式 迭代器模式 观察者模式 策略模式 模板方法模式
行为型模式
行为型模式概述
✓ 行为型模式(Behavioral Pattern)是对在不 同的对象之间划分责任和算法的抽象化。
✓ 行为型模式不仅仅关注类和对象的结构,而 且重点关注它们之间的相互作用。
命令模式
模式分析
✓ 命令模式顺序图 :
命令模式
命令模式实例与解析
✓ 实例一:电视机遥控器 电视机是请求的接收者,遥控器是请求的发送者,遥 控器上有一些按钮,不同的按钮对应电视机的不同操 作。抽象命令角色由一个命令接口来扮演,有三个具 体的令类实现了抽象命令接口,这三个具体命令类分 别代表三种操作:打开电视机、关闭电视机和切换频 道。显然,电视机遥控器就是一个典型的命令模式应 用实例。
✓ 每一个命令都是一个操作:请求的一方发出请求要求执行一个操 作;接收的一方收到请求,并执行操作。
✓ 命令模式允许请求的一方和接收的一方独立开来,使得请求的一 方不必知道接收请求的一方的接口,更不必知道请求是怎么被接 收,以及操作是否被执行、何时被执行,以及是怎么被执行的。
命令模式
模式分析
✓ 命令模式使请求本身成为一个对象,这个对象和其他 对象一样可以被存储和传递。
✓ 命令模式的关键在于引入了抽象命令接口,且发送者 针对抽象命令接口编程,只有实现了抽象命令接口的 具体命令才与接收者相关联。
命令模式
模式分析
✓ 典型的抽象命令类代码:
public abstract class Command {
public abstract void execute(); }
行为型模式
行为型模式简介
✓ 职责链模式(Chain of Responsibility) ✓ 命令模式(Command) ✓ 解释器模式(Interpreter) ✓ 迭代器模式(Iterator) ✓ 中介者模式(Mediator) ✓ 备忘录模式(Memento) ✓ 观察者模式(Observer) ✓ 状态模式(State) ✓ 策略模式(Strategy) ✓ 模板方法模式(Template Method) ✓ 访问者模式(Visitor)
✓ Frequency of use: medium high
命令模式
模式结构
Invoker
Client
Receiver
+ action () ...
Command
+ execute () ...
receiver
ConcreteCommand - state : + execute ()
...
receiver.action();
show()
注册
Biblioteka Baidu
清空
✓ 行为型模式分为类行为型模式和对象行为型模式两种:
类行为型模式:类的行为型模式使用继承关系在几个类之间 分配行为,类行为型模式主要通过多态等方式来分配父类与 子类的职责。
对象行为型模式:对象的行为型模式则使用对象的聚合关联 关系来分配行为,对象行为型模式主要是通过对象关联等方 式来分配两个或多个类的职责。根据“合成复用原则”,系 统中要尽量使用关联关系来取代继承关系,因此大部分行为 型设计模式都属于对象行为型设计模式。
命令模式
模式结构
✓ 命令模式包含如下角色: Command: 抽象命令类 ConcreteCommand: 具体命令类 Invoker: 调用者 Receiver: 接收者 Client:客户类
命令模式
模式分析
✓ 命令模式的本质是对命令进行封装,将发出命令的责任和执行命 令的责任分割开。
命令模式
模式定义
✓ Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.
✓ 通过行为型模式,可以更加清晰地划分类与 对象的职责,并研究系统在运行时实例对象 之间的交互。在系统运行时,对象并不是孤 立的,它们可以通过相互通信协作完成某些 功能,一个对象在运行时也将影响到其他对 象的运行。
注册窗口
账号:
行为型模式
行为型模式概述
注册按钮
click
密码:
性别: 男
女
年龄: 20
this.command=command; }
//业务方法,用于调用命令类的方法 public void call() {
command.execute(); } }
命令模式
模式分析
✓ 典型的具体命令类代码:
public class ConcreteCommand extends Command {
private Receiver receiver; public void execute() {
receiver.action(); } }
命令模式
模式分析
✓ 典型的请求接收者代码:
public class Receiver {
public void action() {
//具体操作 } }
模式动机
命令模式
模式动机
✓ 命令模式可以对发送者和接收者完全解耦,发送者与接 收者之间没有直接引用关系,发送请求的对象只需要知 道如何发送请求,而不必知道如何完成请求。这就是命 令模式的模式动机。
命令模式
模式定义
✓ 命令模式(Command Pattern):将一个请求封装为一 个对象,从而使我们可用不同的请求对客户进行参数化; 对请求排队或者记录请求日志,以及支持可撤销的操作。 命令模式是一种对象行为型模式,其别名为动作 (Action)模式或事务(Transaction)模式。