定義
外觀模式(Facade Pattern):外觀模式定義了一個高層接口甘改,為子系統(tǒng)中的一組接口提供一個統(tǒng)一的接口。外觀模式又稱為門面模式,它是一種結構型設計模式模式。
定義解讀:通過這個高層接口骄瓣,可以將客戶端與子系統(tǒng)解耦:客戶端可以不直接訪問子系統(tǒng),而是通過外觀類間接地訪問耍攘;同時也可以提高子系統(tǒng)的獨立性和可移植性榕栏。
適用場景
子系統(tǒng)隨著業(yè)務復雜度的提升而變得越來越復雜畔勤,客戶端需要某些子系統(tǒng)共同協(xié)作來完成某個任務。
在多層結構的系統(tǒng)中扒磁,使用外觀對象可以作為每層的入口來簡化層間的調用庆揪。
成員
外觀模式包括客戶端共有三個成員:
客戶端類(Client):客戶端是意圖操作子系統(tǒng)的類,它與外觀類直接接觸妨托;與外觀類間接接觸
外觀類(Facade):外觀類知曉各個子系統(tǒng)的職責和接口缸榛,封裝子系統(tǒng)的接口并提供給客戶端
子系統(tǒng)類(SubSystem):子系統(tǒng)類實現子系統(tǒng)的功能,對外觀類一無所知
場景概述
一個智能家居系統(tǒng)兰伤,人是客戶端類内颗,各個電器如空調、CD敦腔、DVD均澳、投影儀、音響等是子系統(tǒng)符衔,控制各個電器的遙控器是外觀類找前,人可以通過遙控器一鍵打開所有電器,一鍵關閉所有電器柏腻,一鍵打開CD讓音響播放音樂等纸厉。
優(yōu)點
實現了客戶端與子系統(tǒng)間的解耦:客戶端無需知道子系統(tǒng)的接口,簡化了客戶端調用子系統(tǒng)的調用過程五嫂,使得子系統(tǒng)使用起來更加容易颗品。同時便于子系統(tǒng)的擴展和維護。
符合迪米特法則(最少知道原則):子系統(tǒng)只需要將需要外部調用的接口暴露給外觀類即可沃缘,而且他的接口則可以隱藏起來躯枢。
缺點
違背了開閉原則:在不引入抽象外觀類的情況下,增加新的子系統(tǒng)可能需要修改外觀類或客戶端的代碼槐臀。