09+C#設(shè)計(jì)模式-適配器模式_第1頁
09+C#設(shè)計(jì)模式-適配器模式_第2頁
09+C#設(shè)計(jì)模式-適配器模式_第3頁
09+C#設(shè)計(jì)模式-適配器模式_第4頁
09+C#設(shè)計(jì)模式-適配器模式_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Design Patterns適配器模式劉 偉 (Sunny)大綱結(jié)構(gòu)型模式適配器模式概述適配器模式的結(jié)構(gòu)與實(shí)現(xiàn)適配器模式的應(yīng)用實(shí)例缺省適配器模式雙向適配器模式適配器模式的優(yōu)缺點(diǎn)與適用環(huán)境2結(jié)構(gòu)型模式結(jié)構(gòu)型模式(Structural Pattern)關(guān)注如何將現(xiàn)有類或?qū)ο蠼M織在一起形成更加強(qiáng)大的結(jié)構(gòu)不同的結(jié)構(gòu)型模式從不同的角度組合類或?qū)ο螅鼈冊(cè)诒M可能滿足各種面向?qū)ο笤O(shè)計(jì)原則的同時(shí)為類或?qū)ο蟮慕M合提供一系列巧妙的解決方案3結(jié)構(gòu)型模式類結(jié)構(gòu)型模式關(guān)心類的組合,由多個(gè)類組合成一個(gè)更大的系統(tǒng),在類結(jié)構(gòu)型模式中一般只存在繼承關(guān)系和實(shí)現(xiàn)關(guān)系對(duì)象結(jié)構(gòu)型模式關(guān)心類與對(duì)象的組合,通過關(guān)聯(lián)關(guān)系,在一個(gè)類中定義另

2、一個(gè)類的實(shí)例對(duì)象,然后通過該對(duì)象調(diào)用相應(yīng)的方法4結(jié)構(gòu)型模式結(jié)構(gòu)型模式一覽表模式名稱定 義學(xué)習(xí)難度使用頻率適配器模式(Adapter Pattern)將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。適配器模式讓那些接口不兼容的類可以一起工作。橋接模式(Bridge Pattern)將抽象部分與它的實(shí)現(xiàn)部分解耦,使得兩者都能夠獨(dú)立變化。組合模式(Composite Pattern)組合多個(gè)對(duì)象形成樹形結(jié)構(gòu),以表示具有部分-整體關(guān)系的層次結(jié)構(gòu)。組合模式讓客戶端可以統(tǒng)一對(duì)待單個(gè)對(duì)象和組合對(duì)象。裝飾模式(Decorator Pattern)動(dòng)態(tài)地給一個(gè)對(duì)象增加一些額外的職責(zé)。就擴(kuò)展功能而言,裝飾模式提供了一種

3、比使用子類更加靈活的替代方案。外觀模式(Facade Pattern)為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的入口。外觀模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。享元模式(Flyweight Pattern)運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度對(duì)象的復(fù)用。代理模式(Proxy Pattern)給某一個(gè)對(duì)象提供一個(gè)代理或占位符,并由代理對(duì)象來控制對(duì)原對(duì)象的訪問。5適配器模式概述電源適配器6適配器模式概述分析現(xiàn)實(shí)生活:不兼容:生活用電220V 筆記電腦20V 引入 AC Adapter(交流電適配器)軟件開發(fā):存在不兼容的結(jié)構(gòu),例如方法名不一致引入適配器模式7適配器模式概述適配器模式的定義

4、對(duì)象結(jié)構(gòu)型模式 / 類結(jié)構(gòu)型模式 適配器模式:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。適配器模式讓那些接口不兼容的類可以一起工作。Adapter Pattern: Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldnt otherwise because of incompatible interfaces.8適配器模式概述適配器模式的定義別名為包裝器(Wrapper)模式定義中所提及的接口是指廣義的接口,它可

5、以表示一個(gè)方法或者方法的集合9適配器模式的結(jié)構(gòu)與實(shí)現(xiàn)適配器模式的結(jié)構(gòu)(類適配器)10適配器模式的結(jié)構(gòu)與實(shí)現(xiàn)適配器模式的結(jié)構(gòu)(對(duì)象適配器)11適配器模式的結(jié)構(gòu)與實(shí)現(xiàn)適配器模式的結(jié)構(gòu)適配器模式包含以下3個(gè)角色:Target(目標(biāo)抽象類)Adapter(適配器類)Adaptee(適配者類)12適配器模式的結(jié)構(gòu)與實(shí)現(xiàn)適配器模式的實(shí)現(xiàn)典型的類適配器代碼:class Adapter : Adaptee, Targetpublic void Request()base.SpecificRequest();13適配器模式的結(jié)構(gòu)與實(shí)現(xiàn)適配器模式的實(shí)現(xiàn)典型的對(duì)象適配器代碼:class Adapter : Targ

6、etprivate Adaptee adaptee; /維持一個(gè)對(duì)適配者對(duì)象的引用public Adapter(Adaptee adaptee)this.adaptee = adaptee;public void Request()adaptee.SpecificRequest();/轉(zhuǎn)發(fā)調(diào)用14適配器模式的應(yīng)用實(shí)例實(shí)例說明在為某學(xué)校開發(fā)教務(wù)管理系統(tǒng)時(shí),開發(fā)人員發(fā)現(xiàn)需要對(duì)學(xué)生成績(jī)進(jìn)行排序和查找,該系統(tǒng)的設(shè)計(jì)人員已經(jīng)開發(fā)了一個(gè)成績(jī)操作接口ScoreOperation,在該接口中聲明了排序方法Sort(int) 和查找方法Search(int, int),為了提高排序和查找的效率,開發(fā)人員決定重用

7、現(xiàn)有算法庫中的快速排序算法類QuickSortClass和二分查找算法類BinarySearchClass,其中QuickSortClass的QuickSort(int)方法實(shí)現(xiàn)了快速排序,BinarySearchClass的BinarySearch (int, int)方法實(shí)現(xiàn)了二分查找。由于某些原因,開發(fā)人員已經(jīng)找不到該算法庫的源代碼,無法直接通過復(fù)制和粘貼操作來重用其中的代碼;而且部分開發(fā)人員已經(jīng)針對(duì)ScoreOperation接口編程,如果再要求對(duì)該接口進(jìn)行修改或要求大家直接使用QuickSortClass類和BinarySearchClass類將導(dǎo)致大量代碼需要修改?,F(xiàn)使用適配器模式

8、設(shè)計(jì)一個(gè)系統(tǒng),在不修改已有代碼的前提下將類QuickSortClass和類BinarySearchClass的相關(guān)方法適配到ScoreOperation接口中。15適配器模式的應(yīng)用實(shí)例實(shí)例類圖算法庫重用結(jié)構(gòu)圖16適配器模式的應(yīng)用實(shí)例實(shí)例代碼(1) ScoreOperation:抽象成績(jī)操作類,充當(dāng)目標(biāo)接口(2) QuickSortClass:快速排序類,充當(dāng)適配者(3) BinarySearchClass:二分查找類,充當(dāng)適配者(4) OperationAdapter:操作適配器,充當(dāng)適配器(5) 配置文件App.config(6) Program:客戶端測(cè)試類演示參考代碼 (DesignPa

9、tternAdapterSample)17適配器模式的應(yīng)用實(shí)例結(jié)果及分析將具體適配器類的類名存儲(chǔ)在配置文件App.config中擴(kuò)展方便18缺省適配器模式定義缺省適配器模式(Default Adapter Pattern):當(dāng)不需要實(shí)現(xiàn)一個(gè)接口所提供的所有方法時(shí),可先設(shè)計(jì)一個(gè)抽象類實(shí)現(xiàn)該接口,并為接口中每個(gè)方法提供一個(gè)默認(rèn)實(shí)現(xiàn)(空方法),那么該抽象類的子類可以選擇性地覆蓋父類的某些方法來實(shí)現(xiàn)需求,它適用于不想使用一個(gè)接口中的所有方法的情況,又稱為單接口適配器模式。19缺省適配器模式結(jié)構(gòu)ServiceInterface(適配者接口)AbstractServiceClass(缺省適配器類)Conc

10、reteServiceClass(具體業(yè)務(wù)類)20缺省適配器模式實(shí)現(xiàn)缺省適配器類的典型代碼片段:abstract class AbstractServiceClass : ServiceInterfacepublic void ServiceMethod1() /空方法public void ServiceMethod2() /空方法public void ServiceMethod3() /空方法21雙向適配器結(jié)構(gòu)22雙向適配器實(shí)現(xiàn)雙向適配器典型代碼片段public class Adapter : Target, Adaptee /同時(shí)維持對(duì)抽象目標(biāo)類和適配者的引用private Targe

11、t target;private Adaptee adaptee;public Adapter(Target target) this.target = target;public Adapter(Adaptee adaptee) this.adaptee = adaptee;public void Request() adaptee.SpecificRequest();public void SpecificRequest() target.Request();23適配器模式的優(yōu)缺點(diǎn)與適用環(huán)境模式優(yōu)點(diǎn)將目標(biāo)類和適配者類解耦,通過引入一個(gè)適配器類來重用現(xiàn)有的適配者類,無須修改原有結(jié)構(gòu)增加了類的透明性和復(fù)用性,提高了適配者的復(fù)用性,同一個(gè)適配者類可以在多個(gè)不同的系統(tǒng)中復(fù)用靈活性和擴(kuò)展性非常好類適配器模式:置換一些適配者的方法很方便對(duì)象適配器模式:可以把多個(gè)不同的適配者適配到同一個(gè)目標(biāo),還可以適配一個(gè)適配者的子類24適配器模式的優(yōu)缺點(diǎn)與適用環(huán)境模式缺點(diǎn)類適配器模式:(1) 一次最多只能適配一個(gè)適配者類,不能同時(shí)適配多個(gè)適配者;(2) 適配者類不能為最終類;(3) 目標(biāo)抽象類只能為接口,不能為類對(duì)象適配器模式:在適配器中置換適配者類的某些方法比

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論