posts - 73,  comments - 55,  trackbacks - 0
          將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

          ? ? 有時,為復(fù)用而設(shè)計的工具箱類不能夠被復(fù)用的原因僅僅是因為它的接口與專業(yè)應(yīng)用領(lǐng)域所需要的接口不匹配。
          ??? 適配器模式有類的適配器模式和對象的適配器模式兩種不同的形式。

          一、類的適配器模式
          ??? 類的適配器模式把適配的類的API轉(zhuǎn)換成目標(biāo)類的API。


          • 目標(biāo)(Target)角色:這就是所期待得到的接口。
          • 源(Adaptee)角色:現(xiàn)有需要適配的接口。
          • 適配器(Adapter)角色:適配器類是本模式的核心。適配器把源接口轉(zhuǎn)換成目標(biāo)接口。顯然這一角色不可以是接口,而必須是具體類。
          /**
          ?* 定義Client使用的與特定領(lǐng)域相關(guān)的接口
          ?*/
          public interface Target {
          ??? void sampleOperation1();
          ??? void sampleOperation2();
          }
          /**
          ?* 定義一個已經(jīng)存在的接口,這個接口需要適配
          ?*/
          public class Adaptee {
          ??? public void sampleOperation1() {
          ??? ??? // ......
          ??? }
          }
          /**
          ?* 對Adaptee與Target接口進行適配
          ?*/
          public class Adapter extends Adaptee implements Target {
          ??? public void sampleOperation2() {
          ??? ??? // ......
          ??? }
          }

          二、對象適配器
          ??? 與類的適配器模式一樣,對象適配器模式把適配的類的API轉(zhuǎn)換成為目標(biāo)類的API,與類的適配器模式不同的是,對象的適配器模式不是使用繼承關(guān)系連接到Adaptee類,而是使用委派關(guān)系連接到Adaptee類。示意代碼如下:
          /**
          ?* 定義Client使用的與特定領(lǐng)域相關(guān)的接口
          ?*/
          public interface Target {
          ??? void sampleOperation1();
          ??? void sampleOperation2();
          }
          /**
          ?* 定義一個已經(jīng)存在的接口,這個接口需要適配
          ?*/
          public class Adaptee {
          ??? public void sampleOperation1() {
          ??? ??? // ......
          ??? }
          }
          /**
          ?* 對Adaptee與Target接口進行適配
          ?*/
          public class Adapter implements Target {
          ??? private Adaptee adaptee;
          ??? public Adapter(Adaptee adaptee) {
          ??? ??? super();
          ??? ??? this.adaptee = adaptee;
          ??? }
          ??? public void sampleOperation1() {
          ??? ??? adaptee.sampleOperation1();
          ??? }
          ??? public void sampleOperation2() {
          ??? ??? // ......
          ??? }
          }

          類適配器模式和對象適配器模式的異同:Target接口和Adaptee類都相同,不同的是類適配器的Adapter繼承Adaptee實現(xiàn)Target,對象適配器的Adapter實現(xiàn)Target聚集Adaptee。

          適配器模式的用意是將接口不同而功能相同或者相近的兩個接口加以轉(zhuǎn)換。

          三、JDBC驅(qū)動軟件與適配器模式
          ??? JDBC給出一個客戶端通用的界面,每個數(shù)據(jù)庫引擎的JDBC驅(qū)動軟件都是一個介于JDBC接口和數(shù)據(jù)庫引擎接口之間的適配器軟件。
          posted on 2006-07-11 08:52 保爾任 閱讀(924) 評論(0)  編輯  收藏 所屬分類: Design Patten

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 龙门县| 兴安盟| 海淀区| 莫力| 清流县| 黄大仙区| 湘西| 虎林市| 新建县| 黑山县| 九台市| 宜兰县| 岑巩县| 宜黄县| 武川县| 亚东县| 监利县| 彰化市| 巨野县| 碌曲县| 婺源县| 永登县| 万安县| 神木县| 东光县| 隆子县| 临汾市| 临邑县| 监利县| 罗城| 阿拉尔市| 和龙市| 桓台县| 白玉县| 陆良县| 田东县| 秭归县| 荆门市| 闸北区| 廊坊市| 江津市|