Swift-門面(Facade)模式

門面模式(Facade)也稱為外觀模式蛤虐,GOF 在《設(shè)計(jì)模式》一書中給出如下定義:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面旱眯, Facade 模式定義了一個(gè)高層接口于毙,這個(gè)接口使得這一子系統(tǒng)更加容易使用.

門面模式.jpg

門面(Facade)角色:客戶端可以調(diào)用這個(gè)角色的方法连舍。此角色知曉相關(guān)的(一個(gè)或者多個(gè))子系統(tǒng)的功能和責(zé)任.在正常情況下艰垂,本角色會(huì)將所有從客戶端發(fā)來的請(qǐng)求委派到相應(yīng)的子系統(tǒng)去.

子系統(tǒng)(subsystem)角色:可以同時(shí)有一個(gè)或者多個(gè)子系統(tǒng)兜喻。每一個(gè)子系統(tǒng)都不是一個(gè)單獨(dú)的類梦染,而是一個(gè)類的集合。每一個(gè)子系統(tǒng)都可以被客戶端直接調(diào)用朴皆,或者被門面角色調(diào)用帕识。子系統(tǒng)并不知道門面的存在,對(duì)于子系統(tǒng)而言遂铡,門面僅僅是另外一個(gè)客戶端而已.

測試代碼:

    func work() {
        
        let cook:Cook = Cook()
        let service:Service = Service()
        
        cook.cook()
        service.server()
    }
    
}
class Cook {
    
    func cook() {
        print("開始做飯肮疗,炒菜")
    }
}

class Service {
    
    func server() {
        print("提供飯菜給客人")
    }
    
}
       let facade:Facade = Facade()
        facade.work()

優(yōu)點(diǎn):
對(duì)客戶屏蔽子系統(tǒng)組件,減少了客戶處理的對(duì)象數(shù)目并使得子系統(tǒng)使用起來更加容易扒接。通過引入門面模式伪货,客戶代碼將變得很簡單,與之關(guān)聯(lián)的對(duì)象也很少钾怔。
實(shí)現(xiàn)了子系統(tǒng)與客戶之間的松耦合關(guān)系碱呼,這使得子系統(tǒng)的組件變化不會(huì)影響到調(diào)用它的客戶類,只需要調(diào)整外觀類即可蒂教。
降低了大型軟件系統(tǒng)中的編譯依賴性巍举,并簡化了系統(tǒng)在不同平臺(tái)之間的移植過程,因?yàn)榫幾g一個(gè)子系統(tǒng)一般不需要編譯所有其他的子系統(tǒng)凝垛。一個(gè)子系統(tǒng)的修改對(duì)其他子系統(tǒng)沒有任何影響懊悯,而且子系統(tǒng)內(nèi)部變化也不會(huì)影響到外觀對(duì)象。
只是提供了一個(gè)訪問子系統(tǒng)的統(tǒng)一入口梦皮,并不影響用戶直接使用子系統(tǒng)類炭分。

缺點(diǎn):
不能很好地限制客戶使用子系統(tǒng)類,如果對(duì)客戶訪問子系統(tǒng)類做太多的限制則減少了可變性和靈活性剑肯。
在不引入抽象外觀類的情況下捧毛,增加新的子系統(tǒng)可能需要修改外觀類或客戶端的源代碼,違背了“開閉原則”.

參考鏈接:
http://blog.csdn.net/xingjiarong/article/details/50066133

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末让网,一起剝皮案震驚了整個(gè)濱河市呀忧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溃睹,老刑警劉巖而账,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異因篇,居然都是意外死亡泞辐,警方通過查閱死者的電腦和手機(jī)笔横,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咐吼,“玉大人吹缔,你說我怎么就攤上這事【馇眩” “怎么了厢塘?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長撇吞。 經(jīng)常有香客問我俗冻,道長,這世上最難降的妖魔是什么牍颈? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任迄薄,我火速辦了婚禮,結(jié)果婚禮上煮岁,老公的妹妹穿的比我還像新娘讥蔽。我一直安慰自己盐类,他們只是感情好讯沈,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布脐供。 她就那樣靜靜地躺著壹将,像睡著了一般。 火紅的嫁衣襯著肌膚如雪查辩。 梳的紋絲不亂的頭發(fā)上并村,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天嘉蕾,我揣著相機(jī)與錄音荚醒,去河邊找鬼芋类。 笑死,一個(gè)胖子當(dāng)著我的面吹牛界阁,可吹牛的內(nèi)容都是我干的侯繁。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼泡躯,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼贮竟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起较剃,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤咕别,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后写穴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顷级,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年确垫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弓颈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡删掀,死狀恐怖翔冀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情披泪,我是刑警寧澤纤子,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站款票,受9級(jí)特大地震影響控硼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜艾少,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一卡乾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缚够,春花似錦幔妨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雏吭,卻和暖如春锁施,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杖们。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工悉抵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胀莹。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓基跑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親描焰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子媳否,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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

  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識(shí) 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用荆秦、多...
    MinoyJet閱讀 3,922評(píng)論 1 15
  • 1 場景問題# 1.1 生活中的示例## 外觀模式在現(xiàn)實(shí)生活中的示例很多篱竭,比如:組裝電腦,通常會(huì)有兩種方案步绸。 一個(gè)...
    七寸知架構(gòu)閱讀 6,224評(píng)論 7 57
  • 目錄 本文的結(jié)構(gòu)如下: 什么是外觀模式 模式的結(jié)構(gòu) 代碼示例 優(yōu)點(diǎn)和缺點(diǎn) 適用環(huán)境 模式應(yīng)用 模式擴(kuò)展 補(bǔ)充 一掺逼、...
    w1992wishes閱讀 637評(píng)論 0 1
  • 本篇文章介紹一種設(shè)計(jì)模式——外觀模式。本篇文章內(nèi)容參考《JAVA與模式》之門面模式瓤介,外觀模式吕喘,深入淺出外觀模式(二...
    Ruheng閱讀 7,042評(píng)論 0 8
  • 海燕氯质,一個(gè)美麗而充滿了生命熱情募舟、平凡卻又令人贊嘆的女子。 五年前闻察,在一個(gè)身心靈修行的場所認(rèn)識(shí)了海燕拱礁。她清新脫俗的氣...
    自由心空閱讀 846評(píng)論 0 2