資源描述:
《設計模式-1適配器模式.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、適配器模式適配器現(xiàn)實中到處都是如:中國制造的筆記本電腦帶到歐洲使用,需要一個交流電的適配器面向對象適配器假設有一個軟件系統(tǒng),你希望它能和一個新的廠商類庫搭配使用,但是這個新廠商所設計出來的接口,不同于舊廠商的接口現(xiàn)有系統(tǒng)廠商類不想改變現(xiàn)有代碼也不能改變廠商的代碼怎么辦?現(xiàn)有系統(tǒng)廠商類適配器例子需求有一個Shape類,和幾個派生類要求實現(xiàn)一個新的Shape——圓(Circle)優(yōu)秀的編程人員首先會四處尋找替代方案發(fā)現(xiàn)有人已經(jīng)編寫好了一個處理圓形的類,名叫XXCircle它并不知道我們的命名規(guī)則,而是displayItfillItundisplayIt不能直接使用
2、XXCircle,因為想保持Shape類的多態(tài)行為名稱和參數(shù)列表與Shape類不同無法從Shape類派生Circle包含一個XXCircle實現(xiàn)Adapter模式ClassCircleextendsShape{privateXXCirclemyXXCircle;publicCircle(){myXXCircle=newXXCircle();}voidpublicdisplay(){myXXCircle.displayIt();}…}客戶使用適配器的過程如下:客戶通過目標接口調用適配器的方法對適配器發(fā)出請求適配器使用被適配者接口把請求轉換成被適配者的一個或多個調
3、用接口客戶收到調用的結果,但并未察覺這一切是適配器在起轉換作用Adapter模式定義定義:將一個類的接口,轉換成客戶期望的另一個接口。意圖:使控制范圍之外的一個原有對象與某個接口匹配問題:系統(tǒng)的數(shù)據(jù)和行為都正確,但是接口不符。通常用于必須從抽象類派生時。解決方案:Adapter模式提供了具有所需接口的包裝類。Adapter模式定義參與者與協(xié)作者:Adapter改變了Adaptee的接口,使Adaptee與Adapter的基類Target匹配。這樣Client就可以使用Adaptee了,好像它是Target類型。Adapter模式定義效果:Adapter模式使原
4、有對象能夠適應新的類結構,不受其接口的限制。實現(xiàn):將原有類包含在另一個類之中。讓包含類與需要的接口匹配,調用被包含類的方法類的適配器類適配器不是使用組合來適配被適配者,而是繼承被適配者和目標類練習試著將Shape類,Circle類,XXCircle類對應到對象適配器/類適配器模式的定義中真實世界中的適配器想一想Java語言中不同版本中有沒有需要進行適配的真實世界中的適配器早期java版本中集合(Collection)類型(例如:Vector,Stack,Hashtable)都實現(xiàn)了一個elements()方法。該方法返回一個Enumeration(枚舉)新版本
5、中開始使用Iterator(迭代器)接口,這個接口和枚舉接口很像,但不同的是,迭代器還提供了刪除元素的能力。問題面對遺留代碼,這些代碼會暴露出枚舉器接口,但我們又希望在新的代碼中只使用迭代器。解決辦法構造一個適配器將枚舉適配到迭代器實例有一個類(adaptee)實現(xiàn)了數(shù)學中的冪次運算,方法中需要傳入兩個參數(shù),一個是基數(shù)base,另外一個是冪次exp。現(xiàn)在客戶端需要一個求得一個數(shù)的平方的函數(shù)接口(target),傳入一個數(shù),得到它的平方值。為了復用已經(jīng)存在的類adaptee,適用Adapter來適配adaptee,adapter實現(xiàn)了target接口。在架構層次
6、上的應用JDBC驅動軟件與適配器模式JDBC給出一個客戶端通用的界面。每個數(shù)據(jù)庫引擎的JDBC驅動軟件都是一個介于JDBC接口和數(shù)據(jù)庫引擎接口之間的適配器軟件抽象的JDBC接口和各個數(shù)據(jù)庫引擎的API之間都需要相應的適配器軟件,即為各個數(shù)據(jù)庫引擎準備的驅動軟件。JDBC/ODBC橋梁如果沒有合適的JDBC驅動軟件,用戶也可以通過ODBC驅動軟件把JDBC通過一個JDBC/ODBC橋梁軟件與ODBC驅動軟件連接起來,從而達到連接數(shù)據(jù)庫的目的。