Facade模式

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

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

          Facade模式的UML圖如下所示:



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

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

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


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

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

          Copyright © game of programming

          主站蜘蛛池模板: 吴川市| 喀喇沁旗| 留坝县| 孟州市| 碌曲县| 紫金县| 南乐县| 仙桃市| 彰化市| 秭归县| 沾益县| 安新县| 都昌县| 兴安县| 拉孜县| 麻阳| 泰来县| 绥芬河市| 昭平县| 前郭尔| 湾仔区| 平陆县| 浦城县| 东乡县| 厦门市| 张家港市| 全南县| 新巴尔虎右旗| 丰县| 神池县| 边坝县| 揭东县| 萍乡市| 大城县| 山东| 东至县| 礼泉县| 莒南县| 贡觉县| 木兰县| 益阳市|