2020-06-01 命令、適配器淮野、外觀模式

命令模式:

命令模式:將“請求”封裝成對象,以便使用不同的請求、日志柬采、隊列等來參數(shù)化其他對象。命令模式也支持撤銷操作且警。


設(shè)計原則:

把方法的調(diào)用封裝起來粉捻,調(diào)用此對象不需要知道它內(nèi)部具體是如何運行的,只需要知道包裝成型的方法

命令模式的本質(zhì)是對命令進行封裝斑芜,將發(fā)出命令的責任和執(zhí)行命令的責任分割開

將“動作請求者”從“動作執(zhí)行者”中解耦肩刃,即將發(fā)出請求的對象和接受并執(zhí)行請求的對象分離開來。兩者通過命令對象溝通

命令模式的關(guān)鍵在于引入了抽象命令接口,且發(fā)送者針對抽象命令接口編程盈包,只有實現(xiàn)了抽象命令接口的具體命令才能與接收者相關(guān)聯(lián)


特點:

對象只知道通過接口暴露出execute()方法沸呐,當此方法調(diào)用時,接受者執(zhí)行具體的動作呢燥。對象不知道那個接受者執(zhí)行了什么動作崭添,只知道操作進行了


NoCommand對象:execute()方法為空的對象,即不執(zhí)行任何操作的對象叛氨『粼客戶端處理null操作時交給空對象,而無需做if(command != null)操作寞埠。


撤銷操作:在管理一組操作對象的對象中可以添加一個上一個操作的對象引用屁置,用于追蹤最后調(diào)用的命令,并通過命令的undo()方法實現(xiàn)撤銷仁连。同樣在操作命令對象中也可添加局部變量記錄上一個狀態(tài)以實現(xiàn)undo()方法蓝角。

可使用堆棧記錄操作過程中的每一個命令,實現(xiàn)多次撤銷


宏命令:同時執(zhí)行多個命令饭冬,軟編碼使鹅,傳入命令數(shù)組,動態(tài)決定哪些命令


日志請求:使用命令模式的記錄日志伍伤,我們可以將上個檢查點之后的操作都記錄下來并徘,如果系統(tǒng)出現(xiàn)問題,從檢查點開始執(zhí)行命令

隊列請求:把一組命令放到隊列(先進先出)中扰魂,線程從隊列中一個一個刪除命令麦乞,然后調(diào)用它的excecute()方法。

適配器模式:

設(shè)計:

實現(xiàn)想要轉(zhuǎn)換的接口

取得要適配的對象的引用劝评,作為局部變量

用要適配的對象的方法實現(xiàn)接口中的方法

客戶使用適配器的過程:

通過目標接口調(diào)用適配器方法

適配器使用被適配者的接口轉(zhuǎn)換成對被適配者的調(diào)用

客戶端接受調(diào)用結(jié)果姐直,但并未察覺適配器在中轉(zhuǎn)的作用


特點:

將類的接口轉(zhuǎn)換成想要的接口,以便實現(xiàn)不同的接口蒋畜,符合用戶的期望

適配器實現(xiàn)了目標接口声畏,并持有被適配者的實例

客戶與適配器是解耦的

可以通過實現(xiàn)雙邊的接口設(shè)計雙向的適配器

使用對象的組合,被適配者的子類也可以搭配適配器使用

外觀模式:

特點:

將一個或多個類的復(fù)雜的一切隱藏在背后姻成,只露出一個干凈美好的外觀

通過提供一個有著更合理接口的外觀類插龄,將復(fù)雜的子系統(tǒng)變得容易操作

外觀只是提供了一些簡化的操作,沒有把子系統(tǒng)的高級操作隔離起來科展,依然將子系統(tǒng)完整的暴露出來均牢,因此也可以訪問子系統(tǒng)的接口

外觀并沒有實現(xiàn)新的行為,只是將子系統(tǒng)的操作合理的組合

一個子系統(tǒng)可以有多個外觀才睹,并可以創(chuàng)造分層次的外觀

優(yōu)點:

外觀不只簡化了接口徘跪,也將用戶從復(fù)雜的子系統(tǒng)中解耦出來

外觀vs適配器:

外觀的目的是簡化接口甘邀,適配器的目的是轉(zhuǎn)換接口


“最少知識”原則:不要讓太多的類耦合在一起以至于修改系統(tǒng)中的一部分會影響到其他部分

我們可以調(diào)用的方法:

該對象本身

被當作方法參數(shù)傳進來

此方法中所創(chuàng)建的對象實例

對象的任何組件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市垮庐,隨后出現(xiàn)的幾起案子松邪,更是在濱河造成了極大的恐慌,老刑警劉巖哨查,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逗抑,死亡現(xiàn)場離奇詭異,居然都是意外死亡寒亥,警方通過查閱死者的電腦和手機锋八,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來护盈,“玉大人,你說我怎么就攤上這事羞酗「危” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵檀轨,是天一觀的道長胸竞。 經(jīng)常有香客問我,道長参萄,這世上最難降的妖魔是什么卫枝? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮讹挎,結(jié)果婚禮上校赤,老公的妹妹穿的比我還像新娘。我一直安慰自己筒溃,他們只是感情好马篮,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著怜奖,像睡著了一般浑测。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歪玲,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天迁央,我揣著相機與錄音,去河邊找鬼滥崩。 笑死岖圈,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的夭委。 我是一名探鬼主播幅狮,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼募强,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了崇摄?” 一聲冷哼從身側(cè)響起擎值,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逐抑,沒想到半個月后鸠儿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡厕氨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年进每,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片命斧。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡田晚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出国葬,到底是詐尸還是另有隱情贤徒,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布汇四,位于F島的核電站接奈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏通孽。R本人自食惡果不足惜序宦,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望背苦。 院中可真熱鬧互捌,春花似錦、人聲如沸糠惫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硼讽。三九已至巢价,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間固阁,已是汗流浹背壤躲。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留备燃,地道東北人碉克。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像并齐,于是被迫代替她去往敵國和親漏麦。 傳聞我的和親對象是個殘疾皇子客税,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359