**定義:**外觀模式(Fa?ade Pattern),為子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
類型:結構型模式。
適用性:
1. 當子系統非常復雜時,使得客戶調用非常麻煩,不便于使用。這個時候就可以使用外觀模式將這些子系統封裝起來,提供一個統一而簡單接口供客戶端使用。
1. 當需要構建一個層次結構的子系統時,使用外觀模式可以給子系統定義進入口。
概述:
?????????外觀模式主要依賴“迪米特法則”,即盡量減少與其他實體之間的聯系。例如,用戶和一臺電腦。如果用戶想開機,他不需要云單獨打開電源,再啟動CPU,再啟動硬盤電源,再連接顯示器。用戶不需要知道電腦開機完成了哪些工作,用戶只想開機了就可以正常使用電腦就行了。用戶要做的,只是按一下開機鍵,所有的一切都會在這一個開機動作中自動完成。減少用戶對電腦內部的了解,這樣能夠使得用戶更方便地使用電腦,而且如果電腦開機有問題,也不需要云從用戶身上找,直接去電腦上面找就可以,能夠更方便地定位問題。
類圖:

參與者:
1. Client,客戶端,直接與Computer交互。
1. Computer,由Display,Power,HardDisk幾個子系統構成。并且提供一個Startup的接口用來一次性控制所有子系統啟動。
1. Display,Power,HardDisk,子系統,完成Computer指派的功能。
示例代碼:
~~~
// C#
namespace?Design11
{
???class?Power
???{
???????public?void?Start()
???????{
???????????Console.WriteLine("啟動電源");
???????}
???}
???class?Display
???{
???????public?void?DisplayContent()
???????{
???????????Console.WriteLine("顯示內容");
???????}
???}
???class?HardDisk
???{
???????public?void?ReadDisk()
???????{
???????????Console.WriteLine("讀取硬盤數據");
???????}
???}
???//?Fasade
???class?Computer
???{
???????private?Power?power?=?new?Power();
???????private?Display?display?=?new?Display();
???????private?HardDisk?hDisk?=?new?HardDisk();
???????public?void?Startup()
???????{
???????????power.Start();
???????????display.DisplayContent();
???????????hDisk.ReadDisk();
???????}
???}
???//?Client
???class?Program
???{
???????static?void?Main(string[]?args)
???????{
???????????Computer?computer?=?new?Computer();
???????????Console.WriteLine("準備啟動電腦");
???????????computer.Startup();
???????}
???}
}
~~~
優點:使得代碼更加模塊化,更方便調用以及查找問題。
**注意:**如果有多個子系統需要進行通訊時,最好是通過Facade來中轉。
參考資料:
1. 《設計模式——可復用面向對象軟件基礎》
1. 《大話設計模式》
1. 《Head?First設計模式》
- 前言
- 設計模式六大原則
- 1——創建型模式之簡單工廠模式
- 2——創建型模式之工廠方法模式
- 3——創建型模式之抽象工廠模式
- 4——創建型模式之單例模式
- 5——創建型模式之建造者模式
- 6——創建型模式之原型模式
- 7——結構型模式之適配器模式
- 8——結構型模式之橋接模式
- 9——結構型模式之組合模式
- 10——結構型模式之裝飾者模式
- 11——結構型模式之外觀模式
- 12——結構型模式之享元模式
- 13——結構型模式之代理模式
- 14——行為型模式之職責鏈模式
- 15——行為型模式之命令模式
- 16——行為型模式之解釋器模式
- 17——行為型模式之迭代器模式
- 18——行為型模式之中介者模式
- 19——行為型模式之備忘錄模式
- 20——行為型模式之觀察者模式
- 21——行為型模式之狀態模式
- 22——行為型模式之策略模式
- 23——行為型模式之模板方法模型
- 24——行為型模式之訪問者模式
- 設計模式總結