2018-10-27

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

現(xiàn)有場景描述:

現(xiàn)在無論是系統(tǒng)自帶的鍵盤還是第三方的鍵盤一般都自帶撤銷和恢復(fù)功能,你知道它們是用的什么模式實現(xiàn)的嗎?

它們用的是命令模式+觀察者模式,你答對了嗎?

簡單科普一下

啥是Command模式?

Command模式:

- 模式類型:行為類模式

- 定義:將一個操作、一個方法調(diào)用、一個命令封裝成一個對象,在合適的時候讓這個對象進(jìn)行執(zhí)行。

- 適用場景(執(zhí)行意愿):像個皇帝身邊的守護(hù)侍衛(wèi)一樣,隨叫隨到。隨時準(zhǔn)備著等待被調(diào)用。例如:軟件提供的菜單按鈕,點擊了,就會執(zhí)行相應(yīng)的操作。

- 類圖:

調(diào)用者中有個聚合關(guān)系的命令類

命令類索引著命令接受者

是不是So Easy??!

啥是Obsevser模式?

- 模式類型:行為類模式

- 定義:表示的是一種一對多的關(guān)系。當(dāng)被觀察者類A的屬性aa發(fā)生了改變,就會主動去通知觀察類B、C、D,這樣觀察類們的狀態(tài)就會及時的被更新了。

- 適用場景(執(zhí)行意愿):控制器觀察model中的屬性,當(dāng)屬性變化了就去更新View的信息。系統(tǒng)時刻觀察者鍵盤的字符輸入,有了輸入時,就把輸入信息通知給View展示。等等。

- 類圖:

被觀察者索引著觀察者對象

是不是So Easy?。?/b>

?Cocoa Touch框架內(nèi)的實際應(yīng)用

NSUndoManager是蘋果提供的撤銷恢復(fù)管理類,它里面主要有三個要素構(gòu)成

- 恢復(fù)棧

- 撤銷棧

- 命令對象:NSInvocation

圖表顯示如下:

進(jìn)入撤銷棧時,NSInvocation執(zhí)行撤銷命令

進(jìn)入恢復(fù)棧時,NSInvocation執(zhí)行恢復(fù)命令

開發(fā)中如何將它們合起來用呢?

1.在Command中添加命令執(zhí)行對象NSInvocation

2.在Command中添加觀察者列表,當(dāng)命令執(zhí)行是通知列表中的觀察者

3.創(chuàng)建一個類似NSUndoManager的類,來管理整體commond列表


文章同步發(fā)布在博客園:https://www.cnblogs.com/zhou--fei/p/9905536.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,744評論 0 5
  • 設(shè)計模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計原則時需要注意以下幾點:a) 高內(nèi)聚、低耦合和單一職能的“沖突”實際上,這兩者...
    彥幀閱讀 3,901評論 0 14
  • pdf下載:https://pan.baidu.com/s/1SM__fev_esbYhVOWo90RKw 深入理...
    BenjaminCool閱讀 271評論 0 0
  • 道聲早安,我的三個標(biāo)簽是第一個標(biāo)簽是兩個孩子的媽媽,第二個標(biāo)簽?zāi)厥菚r間管理,建行第三個標(biāo)簽?zāi)?,是攝影愛好者和晨跑愛...
    Aimee1314閱讀 394評論 0 0
  • 在乎你的人,永遠(yuǎn)會比你主動。所以如果不被在乎,要學(xué)會轉(zhuǎn)身。如果不被愛惜,要懂得放棄。也許轉(zhuǎn)身,你就遇上。 早上你說...
    Soul6mate閱讀 869評論 0 1

友情鏈接更多精彩內(nèi)容