gof《設計模式》一書對facade模式是這樣描述的:
為子系統中的一組介面提供乙個統一介面。facade模式定義了乙個更高層的介面,使子系統更加容易使用。
大致意思是說:使用一種比原有方式更簡單的辦法與系統互動。例如,我們把乙個很檔案的檔案,放在了第二抽屜裡,而第二個抽屜的鑰匙放在了第乙個抽屜裡,我們要想取出這個檔案,第一步肯定要拿到第乙個抽屜的鑰匙,然後開啟它再拿出第二個抽屜的鑰匙,最後開啟第二個抽屜取出檔案。
uml類圖如下所示:
我就上面說的那個情形寫一下實現**,首先我們要實現二個子系統,呵呵,把抽屜比喻成系統,有點誇張了(
drawerone
、drawertwo):
輸出結果:
第乙個抽屜被開啟了
得到第二個抽屜的鑰匙
第二個抽屜被開啟了
得到這個重要檔案
以下是採用了外觀模式後:
第乙個抽屜被開啟了
得到第二個抽屜的鑰匙
第二個抽屜被開啟了
得到這個重要檔案
正如上面所說,客戶端
client
,它並不需要關心子系統,而是關心
drawe***cade
所留下來的和外部互動的介面,而子系統在
drawe***cade
的聚合。
facade
模式主要適用於以下幾種情況:1)
不需要使用乙個複雜系統的所有功能,而且可以建立乙個新的類,包含訪問系統的所有規則。如果只需要使用系統的部分功能,那麼你為新類所建立的
api將比原系統的
api簡單的多。 2)
希望封裝或者隱藏系統原系統。 3)
希望使用原系統的功能,而且還希望增加一些新的功能。 4)
編寫新類的成本小於所有人學會使用或者未來維護原系統上所需的成本。
設計模式之十(外觀模式)
原文 設計模式之十 外觀模式 前言外觀模式 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一系統更加容易使用.結構圖 subsystem class 子系統類集合 實現子系統的功能,處理facade物件指派的任務,注意子類中沒有facade的任何資訊,即沒有對fac...
設計模式之十(外觀模式)
前言 外觀模式 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一系統更加容易使用.結構圖 subsystem class 子系統類集合 實現子系統的功能,處理facade物件指派的任務,注意子類中沒有facade的任何資訊,即沒有對facade物件的引用 實現 首先...
研磨設計模式學習筆記2 外觀模式Facade
大綱 概述實現 一 概述 簡介 外觀模式是一種結構性模式,他為客戶端提供了乙個簡便的訪問介面即外觀。客戶只要和這個外觀打交道,遮蔽了系統內部的複雜性。角色 外觀模式由2個角色,1是外觀 2是子系統。使用 客戶想執行多個子系統的操作,為了簡化客戶的操作,我們提供乙個外觀,這個外觀只有乙個入口,客戶只根...