模式簡介:
意圖--一個一致的高層接口
Facade模式的意圖:為了子系統(tǒng)中的一組接口提供一個一致的界面,F(xiàn)acade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。
Facade模式:關(guān)鍵特征
意圖 希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的接口。
問題 只需要使用一個復(fù)雜系統(tǒng)的一個子集。或者,需要用一種特殊的方式與系統(tǒng)交互。
解決方案 Facade向客戶展現(xiàn)使用現(xiàn)有系統(tǒng)的一個新的接口。
參與者與 向客戶展現(xiàn)一個定制的接口,讓客戶更容易地使用現(xiàn)有系統(tǒng)。
協(xié)作者
效果 Facade模式簡化了對所需子系統(tǒng)的使用。但是,由于Facade并不完整,因此某些功能對于客戶可能是不可用的
實現(xiàn) 定義一個(或一組)新的類來提供所需的接口
*讓新的類使用現(xiàn)有的系統(tǒng)
1)Facade模式的變體:減少客戶必須處理的對象數(shù)量
2)Facade模式的變體:用新的程序?qū)ΜF(xiàn)有功能進(jìn)行補充
3)Facade模式的變體:一個“封裝”層
幾個需要包裝原有系統(tǒng)的理由:
*跟蹤對系統(tǒng)的使用----強迫所有客戶通過Facade使用原有系統(tǒng),然后就可以很容易地監(jiān)控對系統(tǒng)的使用。
*改變系統(tǒng)----我可能需要在未來改變我們的系統(tǒng)。如果把原有系統(tǒng)設(shè)計成Facade類的私有成員,那么只需作最少的工作就能切斷
一個新的系統(tǒng)。當(dāng)然,我仍然需要做一些重要的工作,但至少我只要改變一個地方(Facade類)的代碼。