適配器模式(Adapter)

一龙巨、模式定義

將一個類的接口轉(zhuǎn)換成客戶端所期待的另一個接口武氓,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作钞脂。

Convert the interface of a class into another interface clients expect.Adapter lets classes work
together that couldn't otherwise because of incompatible interfaces.

二敛苇、模式結(jié)構(gòu)

2.1 類圖

Adaptee.png
  • Client:客戶端竭鞍。調(diào)用自己需要的領(lǐng)域接口 Target匣椰。
  • Target:目標角色裆熙。定義客戶端需要的跟特定領(lǐng)域相關(guān)的接口。
  • Adaptee:源角色禽笑。已經(jīng)存在的接口入录,通常能滿足客戶端的功能要求,但是接口與客戶端要求的特定領(lǐng)域接口不一致佳镜,需要被適配僚稿。
  • Adapter:適配器角色。適配器模式的核心角色蟀伸,其他兩個角色都是已經(jīng)存在的角色蚀同,而適配器角色時需要新建立的缅刽,它的職責非常簡單:把源角色轉(zhuǎn)換成目標角色。

2.2 代碼

Target:

public interface Target {
   void request();
}

Adaptee:

public class Adaptee {
   public void specificRequest() {
      System.out.println("需要被適配的類蠢络!");
   }
}

Adapter:

public class Adapter extends Adaptee implements Target {
    @Override
    public void request() {
        super.specificRequest();
    }
}

Client:

public class Client {
   public static void main(String[] args) {
      Target target = new Adapter();
      target.request();
   }
}

三衰猛、模式講解

3.1 功能

適配器的主要功能是進行轉(zhuǎn)換匹配,目的是復用已有的功能刹孔,而不是來實現(xiàn)新的接口啡省。

適配器里面可以實現(xiàn)功能,稱這種適配器為智能適配器髓霞。在接口匹配和轉(zhuǎn)換的過程中卦睹,也有可能需要額外實現(xiàn)一定的功能,才能轉(zhuǎn)換過來方库,比如需要調(diào)整參數(shù)以進行匹配等分预。

3.2 常見實現(xiàn)

在實現(xiàn)適配器的時候,適配器通常是一個類薪捍,一般會讓適配器類去實現(xiàn)Target 接口笼痹,然后在適配器的具體實現(xiàn)里面調(diào)用 Adaptee。

3.3 優(yōu)缺點

優(yōu)點:

  • 更好的復用性
  • 更好的可擴展性

缺點:

  • 過多地使用適配器酪穿,會讓系統(tǒng)非常零亂凳干,不容易整體進行把握

3.4 本質(zhì)

? 轉(zhuǎn)換匹配,復用功能被济。

適配器通過轉(zhuǎn)換調(diào)用已有的實現(xiàn)救赐,從而能把已有的實現(xiàn)匹配成需要的接口,使之能滿足客戶端的需要只磷。也就是說轉(zhuǎn)換匹配是手段经磅,而復用已有的功能才是目的。

3.5 應(yīng)用場景

  • 如果你想要使用一個已經(jīng)存在的類钮追,但是它的接口不符合你的需求预厌,這種情況可以使用適配器模式,來把已有的實現(xiàn)轉(zhuǎn)換成你需要的接口元媚。
  • 如果你想創(chuàng)建一個可以復用的類轧叽,這個類可能和一些不兼容的類一起工作,這種情況可以使用適配器模式刊棕,到時候需要什么就適配什么炭晒。
  • 如果你想使用一些已經(jīng)存在的子類,但是不可能對每一個子類都進行適配甥角,這種情況可以選用對象適配器网严,直接適配這些子類的父類就可以了。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗤无,一起剝皮案震驚了整個濱河市震束,隨后出現(xiàn)的幾起案子怜庸,更是在濱河造成了極大的恐慌,老刑警劉巖驴一,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件休雌,死亡現(xiàn)場離奇詭異灶壶,居然都是意外死亡肝断,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門驰凛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胸懈,“玉大人,你說我怎么就攤上這事恰响∪で” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵胚宦,是天一觀的道長首有。 經(jīng)常有香客問我,道長枢劝,這世上最難降的妖魔是什么井联? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮您旁,結(jié)果婚禮上烙常,老公的妹妹穿的比我還像新娘。我一直安慰自己鹤盒,他們只是感情好蚕脏,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侦锯,像睡著了一般驼鞭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尺碰,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天终议,我揣著相機與錄音,去河邊找鬼葱蝗。 笑死穴张,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的两曼。 我是一名探鬼主播皂甘,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼悼凑!你這毒婦竟也來了偿枕?” 一聲冷哼從身側(cè)響起璧瞬,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渐夸,沒想到半個月后嗤锉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡墓塌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年瘟忱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苫幢。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡访诱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出韩肝,到底是詐尸還是另有隱情触菜,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布哀峻,位于F島的核電站涡相,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏剩蟀。R本人自食惡果不足惜催蝗,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喻旷。 院中可真熱鬧生逸,春花似錦、人聲如沸且预。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锋谐。三九已至遍尺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涮拗,已是汗流浹背乾戏。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留三热,地道東北人鼓择。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像就漾,于是被迫代替她去往敵國和親呐能。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容