設計模式筆記(6 FACADE)

FACADE(外觀)
適用性
1.需要爲一個複雜子系統提供一個簡單接口時,爲子系統提供一個簡單的外觀。
2.客戶程序與抽象類的實現之間存在很大的依賴性
3.當需要構建一個層次結構的子系統時,使用FACADE來定義子系統中每層的入口點。

思考:
    關於第一點,好處是明顯的,它降低了客戶的學習成本。但是,一般而言,如果這個子系統是一個定製的子系統,可能直接提供一個簡單接口更省事。如果這個子系統來是已經實現了的,或者存在必須訪問子系統內部組件的可能,這個時候使用FACADE可能更恰當。另外,提供一個FACADE,供二次開發,也是非常有價值的。FACADE的特別之處在於,外觀並不打算隱藏內部的子系統,只是希望可以降低客戶使用該子系統的學習成本和使用成本。實際上,有點爲常見應用環境定製一個接口包的意思。從這一點出發,是否可以得出一個推論:我們可以爲一個子系統提供多個獨立的FACADE,從而簡化多個典型的常見情形的使用成本?
    關於第二點,從依賴倒置的原則來說,實現應該圍繞上層的需要來設計接口。如果是這樣,那也就沒有FACADE存在的必要了。我想,出現需要FACADE的情況是什麼呢?一個是,這個子系統相當獨立,並且,我們在這樣一個子系統上已經有了充分的認識,那麼按照這個子系統本身的邏輯來實現是最自然的。另一個情況是,這個子系統過於複雜,在實現上,不得不充分尊重如何實現該子系統。
    FACADE模式的目的是降低使用成本,也具備一定的劃分子系統的功能。但FACADE並不打算封裝其所在的子系統。那樣的化,FACADE可能變得過於笨拙和複雜,反而爲用戶帶來負擔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章