基本定義
- 含義:外部與一個子系統的通信必須通過一個統一的門面(Facade)對象進行
- 作用:門面模式的門面類將客戶端與子系統的內部複雜性分隔,使得客戶端只需要與門面對象打交道,而不需要與子系統內部的很多對象打交道
核心特點:知道子角色的功能和責任,將客戶端發來的請求委派給子系統,無業務邏輯,不參與子系統的業務邏輯
一個形象的例子:
醫院無接待員的情況下病人看病時:
當醫院改善增加了接待員,病人的看病體驗:
病人:客戶端
接待員:門面角色,客戶端調用這個角色,處理客戶端的請求委派到相應子系統
繳費、掛號:子系統角色
示意圖:
使用場景
爲一個複雜子系統提供一個簡單接口,使得子系統更具可複用性;
子系統的獨立,將子系統與它的客戶端以及其他的子系統分離;
層次化結構,構建一個層次化系統時使用facade模式定義每一層的入口,限定僅通過facade通信,解構層與層的依賴
例子
slf4j的官方文檔解釋如下 :
The Simple Logging Facade for Java (SLF4J) serves as a simple
facade or abstraction for various logging frameworks,
such as java.util.logging, logback and log4j.
slf4j並不是日誌系統的具體實現,而是一個java日誌標準。正如文檔所說作爲各種日誌框架的門面或者抽象。