七、Facade模式 (結構型)

七、Facade模式 (結構型)
1、意圖:爲子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

2、場景:一個爲遊戲充值的網站中,創建訂單需要與三個外部接口打交道:
    用戶系統:根據用戶名獲取用戶ID、查看用戶是否已經激活了遊戲
    卡系統:查看某種類型的充值卡是否還有庫存
    充值系統:創建一個訂單,並且返回訂單號

    如果直接讓網站和三個外部接口發生耦合,那麼網站因爲外部系統接口修改而修改的概率就很大了,並且就這些小接口來說並不是十分友善,它們提供的大多數是工具方法,具體怎麼去使用還是要看充值網站創建訂單的邏輯。
    Facade的思想就是在小接口上封裝一個高層接口,屏蔽子接口的調用,提供外部更簡潔,更易用的接口。

 
示例代碼

 

5、何時採用
  -- 從代碼角度來說, 如果你的程序有多個類是和一組其它接口發生關聯的話可以考慮在其中加一個門面類型。
  -- 從應用角度來說, 如果子系統的接口是非常細的,調用方也有大量的邏輯來和這些接口發生關係,那麼就可以考慮使用Facade把客戶端與子系統的直接耦合關係進行化解。你可能會說,子系統改了門面不是照樣改?的確是需要改,但是如果客戶端本身的工作已經比較複雜,或者說可能有多個需要調用門面的地方,這個時候門面的好處就體現了。

6、實現要點
  -- 通過一個高層接口讓子系統和客戶端不發生直接關聯,使客戶端不受子系統變化的影響。
  -- Facade不僅僅針對代碼級別,在構架上,特別是WEB應用程序的構架上,Facade的應用非常普遍。

7、注意事項
  -- Facade不一定只能是一個,可以考慮把門面進行細分。

發佈了97 篇原創文章 · 獲贊 9 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章