2018-10-27

设计模式中的黄金搭档(一对活宝):命令模式+观察者模式

现有场景描述:

现在无论是系统自带的键盘还是第三方的键盘一般都自带撤销和恢复功能,你知道它们是用的什么模式实现的吗?

它们用的是命令模式+观察者模式,你答对了吗?

简单科普一下

啥是Command模式?

Command模式:

- 模式类型:行为类模式

- 定义:将一个操作、一个方法调用、一个命令封装成一个对象,在合适的时候让这个对象进行执行。

- 适用场景(执行意愿):像个皇帝身边的守护侍卫一样,随叫随到。随时准备着等待被调用。例如:软件提供的菜单按钮,点击了,就会执行相应的操作。

- 类图:

调用者中有个聚合关系的命令类

命令类索引着命令接受者

是不是So Easy!!

啥是Obsevser模式?

- 模式类型:行为类模式

- 定义:表示的是一种一对多的关系。当被观察者类A的属性aa发生了改变,就会主动去通知观察类B、C、D,这样观察类们的状态就会及时的被更新了。

- 适用场景(执行意愿):控制器观察model中的属性,当属性变化了就去更新View的信息。系统时刻观察者键盘的字符输入,有了输入时,就把输入信息通知给View展示。等等。

- 类图:

被观察者索引着观察者对象

是不是So Easy!!

 Cocoa Touch框架内的实际应用

NSUndoManager是苹果提供的撤销恢复管理类,它里面主要有三个要素构成

- 恢复栈

- 撤销栈

- 命令对象:NSInvocation

图表显示如下:

进入撤销栈时,NSInvocation执行撤销命令

进入恢复栈时,NSInvocation执行恢复命令

开发中如何将它们合起来用呢?

1.在Command中添加命令执行对象NSInvocation

2.在Command中添加观察者列表,当命令执行是通知列表中的观察者

3.创建一个类似NSUndoManager的类,来管理整体commond列表


文章同步发布在博客园:https://www.cnblogs.com/zhou--fei/p/9905536.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,771评论 0 5
  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,916评论 0 14
  • pdf下载:https://pan.baidu.com/s/1SM__fev_esbYhVOWo90RKw 深入理...
    BenjaminCool阅读 280评论 0 0
  • 道声早安,我的三个标签是第一个标签是两个孩子的妈妈,第二个标签呢是时间管理,建行第三个标签呢,是摄影爱好者和晨跑爱...
    Aimee1314阅读 409评论 0 0
  • 在乎你的人,永远会比你主动。所以如果不被在乎,要学会转身。如果不被爱惜,要懂得放弃。也许转身,你就遇上。 早上你说...
    Soul6mate阅读 872评论 0 1

友情链接更多精彩内容