国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

.Net中適配器、橋接與外觀三模式的關(guān)系

2019-11-17 04:39:38
字體:
供稿:網(wǎng)友

  這幾天一直在研究各種各樣的設(shè)計(jì)模式,在學(xué)習(xí)適配器模式、橋接模式和外觀模式模式的時(shí)候,發(fā)現(xiàn)他們之間存在著一定的關(guān)系,實(shí)際上模式不適單一存在的,在我們的現(xiàn)實(shí)編程生活中往往是幾種模式結(jié)合使用的。

  1.適配器模式與橋接模式的區(qū)別和聯(lián)系

  適配器模式和橋接模式都是間接引用對(duì)象,因此可以使系統(tǒng)更靈活,在實(shí)現(xiàn)上都涉及從自身以外的一個(gè)接口向被引用的對(duì)象發(fā)出請(qǐng)求。

  兩種模式的區(qū)別在于使用場(chǎng)合不同,適配器模式主要解決兩個(gè)已有接口間的匹配問題,這種情況下被適配的接口的實(shí)現(xiàn)往往是一個(gè)黑匣子。我們不想,也不能修改這個(gè)接口及其實(shí)現(xiàn)。同時(shí)也不可能控制其演化,只要相關(guān)的對(duì)象能與系統(tǒng)定義的接口協(xié)同工作即可。適配器模式經(jīng)常用在與第三方產(chǎn)品的功能集成上,采用該模式適應(yīng)新類型的增加的方式是開發(fā)針對(duì)這個(gè)類型的適配器,如下所示。

.Net中適配器、橋接與外觀三模式的關(guān)系

  橋接模式則不同,參與橋接的接口是穩(wěn)定的,用戶可以擴(kuò)展和修改橋接中的類,但是不能改變接口。橋接模式通過接口繼續(xù)或者繼續(xù)實(shí)現(xiàn)功能擴(kuò)展,如圖所示。


.Net中適配器、橋接與外觀三模式的關(guān)系

  按照GOF的說法,橋接模式和適配器模式用于設(shè)計(jì)的不同階段,橋接模式用于設(shè)計(jì)的前期,即在設(shè)計(jì)類時(shí)將類規(guī)劃為邏輯和實(shí)現(xiàn)兩個(gè)大類,使它們可以分別進(jìn)行演化;而適配器模式用于設(shè)計(jì)完成之后,當(dāng)發(fā)現(xiàn)設(shè)計(jì)完成的類無法協(xié)同工作時(shí),可以采用適配器模式。

      然而,很多情況下在設(shè)計(jì)初期就要考慮適配器模式的使用,如涉及大量第三方應(yīng)用接口的情況。

  2.適配器模式與橋接模式的聯(lián)合

  在實(shí)際應(yīng)用中,橋接模式經(jīng)常和適配器模式同時(shí)出現(xiàn),如圖所示。本文給出一些示例,僅供參考。

.Net中適配器、橋接與外觀三模式的關(guān)系
  這種情況經(jīng)常出現(xiàn)在需要其他系統(tǒng)提供實(shí)現(xiàn)方法時(shí),一個(gè)典型的例子是工業(yè)控制中的數(shù)據(jù)采集。不同工控廠家提供的底層數(shù)據(jù)采集接口通常不同,因此在做上層軟件設(shè)計(jì)時(shí)無法預(yù)知可能碰到何種接口。為此需要定義一個(gè)通用的采集接口,然后針對(duì)具體的數(shù)據(jù)采集系統(tǒng)開發(fā)相應(yīng)的適配器。數(shù)據(jù)存儲(chǔ)需要調(diào)用數(shù)據(jù)采集接口獲得數(shù)據(jù),而數(shù)據(jù)可以保存到關(guān)系數(shù)據(jù)庫、實(shí)時(shí)數(shù)據(jù)庫或者文件中。數(shù)據(jù)存儲(chǔ)接口和數(shù)據(jù)采集結(jié)構(gòu)構(gòu)成了橋接,如圖所示。

.Net中適配器、橋接與外觀三模式的關(guān)系

  同樣的結(jié)構(gòu)也經(jīng)常出現(xiàn)在報(bào)表相關(guān)的應(yīng)用中,報(bào)表本身結(jié)構(gòu)和報(bào)表輸出方式完全可以分開,如下圖所示。


.Net中適配器、橋接與外觀三模式的關(guān)系
  報(bào)表輸出可以單獨(dú)抽象出來與報(bào)表的具體形式分開。但報(bào)表輸出又依靠于具體的輸出方式,假如需要輸出為PDF格式,則要調(diào)用與PDF相關(guān)的API,而這是設(shè)計(jì)所無法控制的,因此這里要使用適配器模式。

  3.適配器模式與外觀模式的關(guān)系

  適配器模式與外觀模式有些相似,都是對(duì)現(xiàn)相存系統(tǒng)的封裝。但這兩種模式的意圖完全不同,前者使現(xiàn)存系統(tǒng)與正在設(shè)計(jì)的系統(tǒng)協(xié)同工作而后者則為現(xiàn)存系統(tǒng)提供一個(gè)更為方便的訪問接口。簡(jiǎn)單地說,適配器模式為事后設(shè)計(jì),而外觀模式則必須事前設(shè)計(jì),因?yàn)橄到y(tǒng)依靠于外觀。總之,適配器模式?jīng)]有引入新的接口,而外觀模式則定義了一個(gè)全新的接口。

  適配器模式用于粒度較小的功能集成,如使用權(quán)威單位所規(guī)定的無法修改并替換的現(xiàn)有算法模塊(油罐的容積算法為國(guó)家計(jì)量權(quán)威單位所規(guī)定,需要使用特定的模塊),將來也可能升級(jí)。這時(shí)可以使用適配器模式。

  外觀模式的使用有時(shí)比較難把握,外觀接口的定義與設(shè)計(jì)人員對(duì)業(yè)務(wù)的理解程度有很大關(guān)系。假如接口設(shè)計(jì)過于復(fù)雜,則不如直接調(diào)用原系統(tǒng)簡(jiǎn)單;假如接口設(shè)計(jì)過于簡(jiǎn)單,有些功能需要調(diào)用原有系統(tǒng)才能實(shí)現(xiàn),同樣達(dá)不到封裝目的。在這種情況下,首先要考慮被封裝系統(tǒng)的穩(wěn)定程度。假如系統(tǒng)處于演化階段,那么接口定義需要復(fù)雜一些,以暴露更多的接口。這時(shí),外觀模式更像一個(gè)大粒度的適配器。被封裝系統(tǒng)發(fā)生演化時(shí),需要新的外觀對(duì)象,而這個(gè)外觀對(duì)象起到了適配器的作用。下圖所示為這種情況下的結(jié)構(gòu)。

 .Net中適配器、橋接與外觀三模式的關(guān)系
  4.總結(jié)

  我們討論了適配器模式、橋接模式和外觀模式之間的關(guān)系。適配器模式經(jīng)常用在需要與第三方API協(xié)同工作的場(chǎng)合,在功能集成需求越來越多的今天,這種模式的使用頻度越來越高,非凡是橋接模式與適配器的組合在設(shè)計(jì)中越來越頻繁地出現(xiàn),幾乎已經(jīng)成為一種新的模式。

      外觀模式是另一個(gè)在系統(tǒng)演化中常用的模式,在某些情況下,它與適配器模式的作用有些相似。但總體上來說,外觀模式所針對(duì)的對(duì)象粒度更大。

  作者博客:http://fineboy.VEVb.com


進(jìn)入討論組討論。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东阿县| 拉萨市| 武山县| 花垣县| 若尔盖县| 黄冈市| 岚皋县| 石棉县| 竹山县| 雷山县| 武乡县| 横峰县| 锡林郭勒盟| 富顺县| 额尔古纳市| 沂水县| 申扎县| 黔西县| 青海省| 墨竹工卡县| 庆城县| 水城县| 新河县| 井冈山市| 西丰县| 开封市| 镇赉县| 永城市| 沁源县| 广汉市| 昌宁县| 外汇| 通榆县| 丰台区| 盐边县| 海兴县| 榆树市| 赣州市| 徐水县| 伽师县| 漳平市|