一、概念
其目的在于降低系統(tǒng)的復(fù)雜程度!
1.1、定義
又叫門面模式,隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個客戶端可以訪問系統(tǒng)的接口,讓子系統(tǒng)更容易使用。

Fecade.png
- 已經(jīng)存在的子系統(tǒng)群或者子模塊:SubSystemA 、SubSystemB、SubSystemC...
- Facade,裝飾類:核心類,負(fù)責(zé)向客戶提供“門面接口”
1.2、解決的問題

外觀模式.jpg
- 問題分析:如圖,實際系統(tǒng)已經(jīng)有很多舊系統(tǒng)或者模塊,開發(fā)中需要訪問這些子系統(tǒng)或者模塊,這會造成調(diào)用關(guān)系復(fù)雜,調(diào)試開發(fā)困難,難以維護等問題。
- 模式的解決思路:抽離單獨層,外觀類Facade,專門負(fù)責(zé)各個子系統(tǒng)或者模塊調(diào)用,一次來降低訪問復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時的復(fù)雜度,簡化客戶端與之的接口。
二、模式的應(yīng)用和優(yōu)缺點
2.1、應(yīng)用場景
- 實例:
1、醫(yī)院看病導(dǎo)診臺:去醫(yī)院看病,可能要去掛號、門診、劃價、取藥,讓患者或患者家屬覺得很復(fù)雜,如果有提供接待人員,只讓接待人員來處理,就很方便。
2、windows的窗口系統(tǒng),就是外觀模式的例子。如關(guān)閉窗口功能,可能設(shè)計數(shù)據(jù)管理對象保存數(shù)據(jù),窗口管理對象擦除界面,內(nèi)存管理對象釋放內(nèi)存,這些對象都很復(fù)雜,但是通過外觀模式,調(diào)用者只需要window.close()。
2.2、優(yōu)缺點
優(yōu)點:
1、減少系統(tǒng)相互依賴。 2、提高靈活性。 3、提高了安全性。缺點:
不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合適。