亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

設計模式中的黃金搭檔(一對活寶):命令模式+觀察者模式

標簽:
設計

现有场景描述:
现在无论是系统自带的键盘还是第三方的键盘一般都自带撤销和恢复功能,你知道它们是用的什么模式实现的吗?
它们用的是==命令模式+观察者模式==,你答对了吗?
简单科普一下
啥是==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  

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消