定義:
????????為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。
結(jié)構(gòu)圖:
區(qū)分中介模式:
-
門面模式對外提供一個(gè)接口
-
中介模式對內(nèi)提供一個(gè)接口
優(yōu)點(diǎn):
-
松耦合:用戶與子系統(tǒng)解耦,屏蔽子系統(tǒng);可以提高子系統(tǒng)的獨(dú)立性;
-
使用簡單:簡化用戶與子系統(tǒng)的依賴關(guān)系;用戶只與門面對接,有統(tǒng)一的入口,不需要知道所有子系統(tǒng)及內(nèi)部構(gòu)造。使得系統(tǒng)更加容易調(diào)用;
-
更好的劃分訪問層次:通過合理使用Facade,可以幫助我們更好地劃分訪問的層次。有些方法是對系統(tǒng)外的,有些方法是系統(tǒng)內(nèi)部使用的。把需要暴露給外部的功能集中到門面中,這樣既方便客戶端使用,也很好地隱藏了內(nèi)部的細(xì)節(jié)。
缺點(diǎn):
-
當(dāng)增加子系統(tǒng)或者擴(kuò)展子系統(tǒng)功能時(shí),可能容易帶來未知風(fēng)險(xiǎn)
-
不符合開閉原則
-
某些情況下可能會違背單一職責(zé)原則
適用場景:
-
首先,在設(shè)計(jì)初期階段,應(yīng)該要有意識的將不同的兩個(gè)層分離。
比如經(jīng)典的三層架構(gòu),就需要考慮在數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層、業(yè)務(wù)邏輯層和表示層的層與層之間建立外觀Facade,這樣可以為復(fù)雜的子系統(tǒng)提供一個(gè)簡單的接口,使得耦合大大降低。
-
其次,在開發(fā)階段,子系統(tǒng)往往因?yàn)椴粩嗟闹貥?gòu)演化而變得越來越復(fù)雜,增加外觀Facade可以提供一個(gè)簡單的接口,減少它們之間的依賴。文章來源:http://www.zghlxwxcb.cn/news/detail-466277.html
-
第三,在維護(hù)一個(gè)一流的大系統(tǒng)時(shí),可能這個(gè)系統(tǒng)已經(jīng)非常難以維護(hù)和擴(kuò)展了。但因?yàn)樗朔浅V匾墓δ?,新的需求開發(fā)必須要依賴它。此時(shí)用外觀模式Facade也是非常合適的。為新系統(tǒng)開發(fā)一個(gè)外觀Facade類,來提供設(shè)計(jì)粗糙或高度復(fù)雜的遺留代碼的比較清晰簡單的接口,讓新系統(tǒng)與Facade對象交互,F(xiàn)acade與遺留代碼交互所有復(fù)雜的工作文章來源地址http://www.zghlxwxcb.cn/news/detail-466277.html
到了這里,關(guān)于設(shè)計(jì)模式之~外觀模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!