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