結(jié)構(gòu)型設計模式-外觀模式

定義

外觀模式(Facade)条舔,為子系統(tǒng)中的一組接口提供一個一致的界面枫耳,定義一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用孟抗。


適用場景

在以下情況下可以考慮使用外觀模式:

為復雜的模塊或子系統(tǒng)提供外界訪問的模塊迁杨;
子系統(tǒng)相互獨立;
在層析結(jié)構(gòu)中凄硼,可以使用外觀模式定義系統(tǒng)的每一層的入口铅协。


優(yōu)點

** 松散耦合**
使得客戶端和子系統(tǒng)之間解耦,讓子系統(tǒng)內(nèi)部的模塊功能更容易擴展和維護摊沉;
簡單易用
客戶端根本不需要知道子系統(tǒng)內(nèi)部的實現(xiàn)狐史,或者根本不需要知道子系統(tǒng)內(nèi)部的構(gòu)成,它只需要跟Facade類交互即可说墨。
更好的劃分訪問層次
有些方法是對系統(tǒng)外的骏全,有些方法是系統(tǒng)內(nèi)部相互交互的使用的。子系統(tǒng)把那些暴露給外部的功能集中到門面中尼斧,這樣就可以實現(xiàn)客戶端的使用姜贡,很好的隱藏了子系統(tǒng)內(nèi)部的細節(jié)。

角色

  • 門面角色:外觀模式的核心棺棵。它被客戶角色調(diào)用鲁豪,它熟悉子系統(tǒng)的功能潘悼。內(nèi)部根據(jù)客戶角色的需求預定了幾種功能的組合。

  • 子系統(tǒng)角色:實現(xiàn)了子系統(tǒng)的功能爬橡。它對客戶角色和Facade時未知的。它內(nèi)部可以有系統(tǒng)內(nèi)的相互交互棒动,也可以由供外界調(diào)用的接口糙申。

  • 客戶角色:通過調(diào)用Facede來完成要實現(xiàn)的功能。


場景模擬

去醫(yī)院看病船惨,可能要去掛號柜裸、門診、劃價粱锐、取藥疙挺,讓患者或患者家屬覺得很復雜,如果有提供接待人員怜浅,只讓接待人員來處理铐然,就很方便。


外觀模式UML圖

外觀模式UML圖

簡單代碼

#import <Foundation/Foundation.h>

@interface Receptionist : NSObject
-(void)seeDoctor;
@end

#import "Receptionist.h"
#import "Register.h"
#import "Medicine.h"
@implementation Receptionist
-(void)seeDoctor{
    [[Register new]reginster];
    [[Medicine new]medicine];
}

@end
#import <Foundation/Foundation.h>

@interface Medicine : NSObject
-(void)medicine;
@end
#import "Medicine.h"

@implementation Medicine
-(void)medicine{
    NSLog(@"病人取藥");
}
@end
#import "Register.h"

@implementation Register
-(void)reginster{
    NSLog(@"病人注冊");
}
@end

#import <Foundation/Foundation.h>

@interface Register : NSObject
-(void)reginster;

@end
#import <Foundation/Foundation.h>
#import "Receptionist.h"
@interface Patient : NSObject
@property (nonatomic,strong) Receptionist *receptionist;
@end

#import "Patient.h"

@implementation Patient

@end

測試代碼

   Receptionist * receptionist= [Receptionist new];
   Patient * patients= [[Patient alloc]init];
    patients.receptionist =receptionist;
    [patients.receptionist seeDoctor];

測試結(jié)果

2018-04-09 12:46:37.516153+0800 結(jié)構(gòu)型設計模式-外觀模式[37443:7517248] 病人注冊
2018-04-09 12:46:37.516303+0800 結(jié)構(gòu)型設計模式-外觀模式[37443:7517248] 病人取藥

上面的receptionist 可以現(xiàn)實一個協(xié)議恶座,實現(xiàn)一個子類實現(xiàn)該協(xié)議擴展更好


其實外觀模式相對來說比較簡單搀暑,在ios中,我們經(jīng)常引用第三方框架跨琳,我們其實這里就可以做成外觀模式自点,要是以后替換第三方框架省心不少。(很簡單脉让,網(wǎng)絡請求框架asi 換成 AFNetworking桂敛,要是以前沒有這個中間代理人,那么要全工程都要改一遍溅潜,要是有這個中間者术唬,只在這個中間者中修改就可以了)

源代碼地址

下一篇博客
[結(jié)構(gòu)型設計模式-享元模式](http://www.reibang.com/p/218edf152029

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伟恶,隨后出現(xiàn)的幾起案子碴开,更是在濱河造成了極大的恐慌,老刑警劉巖博秫,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潦牛,死亡現(xiàn)場離奇詭異,居然都是意外死亡挡育,警方通過查閱死者的電腦和手機巴碗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來即寒,“玉大人橡淆,你說我怎么就攤上這事召噩。” “怎么了逸爵?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵具滴,是天一觀的道長。 經(jīng)常有香客問我师倔,道長构韵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任趋艘,我火速辦了婚禮疲恢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瓷胧。我一直安慰自己显拳,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布搓萧。 她就那樣靜靜地躺著杂数,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矛绘。 梳的紋絲不亂的頭發(fā)上耍休,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音货矮,去河邊找鬼羊精。 笑死,一個胖子當著我的面吹牛囚玫,可吹牛的內(nèi)容都是我干的喧锦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼抓督,長吁一口氣:“原來是場噩夢啊……” “哼燃少!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铃在,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤阵具,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后定铜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阳液,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年揣炕,在試婚紗的時候發(fā)現(xiàn)自己被綠了帘皿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡畸陡,死狀恐怖鹰溜,靈堂內(nèi)的尸體忽然破棺而出虽填,到底是詐尸還是另有隱情,我是刑警寧澤曹动,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布斋日,位于F島的核電站,受9級特大地震影響仁期,放射性物質(zhì)發(fā)生泄漏桑驱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一跛蛋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痊硕,春花似錦赊级、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盒揉,卻和暖如春晋被,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刚盈。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工羡洛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人藕漱。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓欲侮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肋联。 傳聞我的和親對象是個殘疾皇子威蕉,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

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