Facade模式

          Posted on 2007-11-20 14:37 game of programming 閱讀(1007) 評論(0)  編輯  收藏 所屬分類: Design Pattern

          在《設(shè)計模式》一書中,F(xiàn)acade模式的意圖是:為子系統(tǒng)中的一組接口提供一個統(tǒng)一接口,F(xiàn)acade模式定義了一個更高層的接口,使子系統(tǒng)更加容易使用。

          Facade模式的UML圖如下所示:



          如圖所示,F(xiàn)acade向下調(diào)用SubSystem所提供的功能(并非全部功能,而是部分功能)。TargetSystem則通過Facade提供的接口來調(diào)用SubSystem所提供的功能。這樣TargetSystem無需知道SubSystem所提供的所有功能及其細(xì)節(jié),只需知道Facade所提供的接口即可。Facade存在的目的就是為TargetSystem提供更簡單的接口。
          Facade的使用非常普遍。比如在調(diào)用第三方軟件庫時,一般不會用到該軟件庫所提供的所有的接口,而是使用一個Facade類,來包裝我們所用到的接口。然后在程序中直接調(diào)用Facade所提供的接口即可。
          下圖是一個調(diào)用dom4j的Facade的例子。

          在XmlFacade中,會使用到Document、Element和Attribute三個由dom4j所使用到的類/接口,而不使用其他dom4j提供的接口。這樣在BusinessClass中只需要調(diào)用XmlFacade中所提供的接口即可。
          同時,F(xiàn)acade模式還能減少客戶所需要處理的對象數(shù)量。比如在上圖中,假設(shè)有2個BusinessClass,而這兩個BusinessClass都需要調(diào)用Document、Element和Attribute。如果沒有XmlFacade類,那么這兩個BusinessClass都需要分別new一個Document、Element和Attribute類。這樣,就需要生成一共6個新實例(Document、Element和Attribute類每個分別為2個)。如果通過XmlFacade類,則每個Document、Element和Attribute類僅需要一個實例,也就是一共需要3個新的實例而已。

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          posts - 2, comments - 1, trackbacks - 0, articles - 5

          Copyright © game of programming

          主站蜘蛛池模板: 德格县| 新龙县| 岑巩县| 靖安县| 龙游县| 凉城县| 陆河县| 汶川县| 兴安盟| 南京市| 吉林市| 兴宁市| 天柱县| 都匀市| 丰原市| 开化县| 呼伦贝尔市| 义马市| 宝丰县| 措勤县| 纳雍县| 南阳市| 巴林右旗| 翁牛特旗| 通辽市| 府谷县| 滨州市| 灵石县| 屏山县| 长垣县| 巧家县| 绍兴市| 玉门市| 西畴县| 鲜城| 温州市| 宁陕县| 大兴区| 顺义区| 兴安盟| 太仆寺旗|