外觀模式

定義

外觀模式(Facade Pattern):外觀模式定義了一個高層接口,為子系統中的一組接口提供一個統一的接口。外觀模式又稱為門面模式,它是一種結構型設計模式模式。

定義解讀:通過這個高層接口,可以將客戶端與子系統解耦:客戶端可以不直接訪問子系統,而是通過外觀類間接地訪問;同時也可以提高子系統的獨立性和可移植性。

適用場景

子系統隨著業務復雜度的提升而變得越來越復雜,客戶端需要某些子系統共同協作來完成某個任務。

在多層結構的系統中,使用外觀對象可以作為每層的入口來簡化層間的調用。

成員

外觀模式包括客戶端共有三個成員:

客戶端類(Client):客戶端是意圖操作子系統的類,它與外觀類直接接觸;與外觀類間接接觸

外觀類(Facade):外觀類知曉各個子系統的職責和接口,封裝子系統的接口并提供給客戶端

子系統類(SubSystem):子系統類實現子系統的功能,對外觀類一無所知

場景概述

一個智能家居系統,人是客戶端類,各個電器如空調、CD、DVD、投影儀、音響等是子系統,控制各個電器的遙控器是外觀類,人可以通過遙控器一鍵打開所有電器,一鍵關閉所有電器,一鍵打開CD讓音響播放音樂等。

image
image
優點

實現了客戶端與子系統間的解耦:客戶端無需知道子系統的接口,簡化了客戶端調用子系統的調用過程,使得子系統使用起來更加容易。同時便于子系統的擴展和維護。

符合迪米特法則(最少知道原則):子系統只需要將需要外部調用的接口暴露給外觀類即可,而且他的接口則可以隱藏起來。

缺點

違背了開閉原則:在不引入抽象外觀類的情況下,增加新的子系統可能需要修改外觀類或客戶端的代碼。

轉自

面向對象設計的設計模式(七):外觀模式

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容