命令模式

作者: helinyu | 来源:发表于2021-09-09 09:53 被阅读0次

定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。

命令的执行一次或者多次,以及可以撤销
撤销与恢复

命令对象封装了如何对目标执行指令的信息,因此客户端或者调用者不必了解慕白的任何细节,确仍可以对它执行任何已有的操作。 通过吧请求封装成为对象,客户端可以把它参数化并置入队列或者日志中, 也能够支持可撤销的操作。命令对象将一个或多个动作绑定到特定的接收器。 命令模式消除了作为对象的动作和执行它的接收器之间的绑定。


各个对应的角色:
1)client (客户端)创建ConcreteCommand 对象并设定其receiver(接收器)
2)Invoker 要求通用命令(实际上是ConcreteCommand) 实施请求
3)Command 是为Invoker所知的通用接口(协议)
4)ConcreteCommand 气力Receiver和对它的操作action 之间的中间人的作用
5)Receiver 可以是随着由Command(ConcreteCommand)对象实施的相应请求,而执行实际操作的任何对象。

作用:
1》较容易地设计一个命令队列
2》在需要的情况下, 可以较容易将命令记入日志
3》允许接收请求的一方决定是否要否决请求
4》可以容易地实现对请求的撤销和重做
5》由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易。
6》命令模式吧请求一个操作的对象与知道怎么执行一个操作的对象分割开。

使用场景
1)想让应用程序支持撤销与恢复
2)想用对象参数化一个动作以执行操作,并用不同命令对象来代替回调函数
3)想要在不同时刻对请求进行指定、排列和执行
4)想记录修改日志,这样在系统故障时,这些修改可在后来重做一遍
5) 想让系统支持事务(transaction),事务封装了对数据的一系列修改。 事务可以建模为命令对象。

Cocoa Touch 框架中使用命令模式
1》NSInvocation , NSUndoManager 和“目标—动作”机制
NSUndoManger :1)基于撤销注册 2)基于调用的注册

生活例子:
1》烧烤店点烧烤
2》

命令模式的使用:
1》撤销与恢复
2》推迟调用

看一下OC设计模式的绘制例子。

相关文章

  • 12.vim的使用技巧

    命令模式 、命令行模式、编辑模式: INSERT 首次进入文件: 命令模式输入: 表示 命令行模式出现...

  • 五、Linux vim编辑器

    vim编辑器三种模式:命令模式、编辑模式、末行模式 1.命令模式: vim进入文件后就是命令模式 1.1 命令模式...

  • 终端操作文件

    VIM 模式切换从命令模式->编辑模式:i,a,o,I,A,O从编辑模式->命令模式:ESC从命令模式->末行模式...

  • vim 操作 && Mac 配置本地Apache

    一、vim 的基本命令操作 vim 的模式: 编辑模式 ,命令模式 编辑模式: 命令模式:可以通过命令 最重要的命...

  • Vim高效编辑器

    Vim程序员高效编辑器 命令模式,输入模式,底线命令模式 默认进入vim就是命令模式,输入i变为输入模式 命令模式...

  • Command模式

    命令模式(Command) 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Tran...

  • 设计模式详解——命令模式

    本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之命令模式。 一、命令模式的概念 命令模式...

  • Vi编辑器

    命令模式 文本输入模式 末行模式。 插入模式 移动光标: 删除命令: 撤销命令: 重复命令 文本行移动: 复制粘贴...

  • JavaScript设计模式七(命令模式)

    JavaScript设计模式七(命令模式) 定义: 命令模式是最简单和优雅的模式之一,命令模式中的命令指的是一个执...

  • Cisco 路由器配置命令大全(二)

    (1)模式转换命令 用户模式----特权模式,使用命令"enable"特权模式----全局配置模式,使用命令"co...

网友评论

    本文标题:命令模式

    本文链接:https://www.haomeiwen.com/subject/libvwltx.html