命令模式
来源:互联网 发布:辛普森有没有杀妻 知乎 编辑:程序博客网 时间:2024/06/11 07:50
1 问题
请求者不希望或无法直接和被请求者打交道,即请求者不希望或者无法含有被请求者的引用。
2 解决方法
命令模式解决一个对象请求另一个对象调用其方法来完成某种任务。
3 模式的核心
将“请求”封装在“命令”对象的一个方法中。
4 模式的结构
命令模式由4种角色构成,角色之间的关系如下图所示:
- Command:命令接口,封装“请求”的若干方法。
- Receiver:接受者,执行请求相关的操作。
- ConcreteCommand:具体命令,实现命令接口并拥有接受者属性。
- Invoker:请求者,拥有命令接口变量的实例对象,负责调用具体的命令。
5 宏命令
宏命令是一个包含了其他具体命令引用的一个具体命令,如图所示:
6 命名模式的优点
- 请求者与接受者之间没有直接交互,解除彼此之间的耦合。
- 满足“开-闭原则”。新增具体命令和接收者,不需要修改调用者;新增调用者,不需要修改具体命令和接收者。
- 命令对象可以将具体命令持久化。
- 命令对象可以对请求命令进行排队。
7 使用场景
- 需要在不同的时刻指定、排列和执行请求
- 需要提供撤销操作
- 需要支持宏操作
8 见解
- Invoker中使用Command的接口声明命令,满足面对抽象原则。
9 Demo
1 0
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 51单片机中断问题
- javascript--8缓动动画框架>>>手风琴为例
- PAT (Top Level) Practise 1017 The Best Peak Shape (35)
- 《计算机网络(第七版)》读书笔记(一)概述
- IO流_NIO的介绍和JDK7下NIO的一个案例
- 命令模式
- 排队买票_HDU
- WebView网页隐藏屏蔽广告元素标签|去除底部广告
- (打表找循环节)CodeForces
- POJ2976
- 1127.ZigZagging on a Tree (30)
- 212. Word Search II
- Lua 安装及入门资料
- [BZOJ3555][Ctsc2014]企鹅QQ(hash)