2018-10-27

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

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

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

它們用的是命令模式+觀察者模式腥放,你答對(duì)了嗎泣栈?

簡(jiǎn)單科普一下

啥是Command模式粹舵?

Command模式:

- 模式類型:行為類模式

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

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

- 類圖:

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

命令類索引著命令接受者

是不是So EasyG砟痢!

啥是Obsevser模式哀卫?

- 模式類型:行為類模式

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

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

- 類圖:

被觀察者索引著觀察者對(duì)象

是不是So Easy=虽獭!

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

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

- 恢復(fù)棧

- 撤銷棧

- 命令對(duì)象:NSInvocation

圖表顯示如下:

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

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

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

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

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

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


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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蓬坡,一起剝皮案震驚了整個(gè)濱河市猿棉,隨后出現(xiàn)的幾起案子磅叛,更是在濱河造成了極大的恐慌,老刑警劉巖铺根,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宪躯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡位迂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門详瑞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掂林,“玉大人,你說我怎么就攤上這事坝橡⌒喊铮” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵计寇,是天一觀的道長(zhǎng)锣杂。 經(jīng)常有香客問我,道長(zhǎng)番宁,這世上最難降的妖魔是什么元莫? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮蝶押,結(jié)果婚禮上踱蠢,老公的妹妹穿的比我還像新娘。我一直安慰自己棋电,他們只是感情好茎截,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赶盔,像睡著了一般企锌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上于未,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天撕攒,我揣著相機(jī)與錄音,去河邊找鬼沉眶。 笑死打却,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谎倔。 我是一名探鬼主播柳击,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼片习!你這毒婦竟也來了捌肴?” 一聲冷哼從身側(cè)響起蹬叭,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎状知,沒想到半個(gè)月后秽五,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饥悴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年坦喘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片西设。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓣铣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贷揽,到底是詐尸還是另有隱情棠笑,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布禽绪,位于F島的核電站蓖救,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏印屁。R本人自食惡果不足惜循捺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望库车。 院中可真熱鬧巨柒,春花似錦、人聲如沸柠衍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽珍坊。三九已至牺勾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阵漏,已是汗流浹背驻民。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留履怯,地道東北人回还。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叹洲,于是被迫代替她去往敵國(guó)和親柠硕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

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