淺談Java適配器模式

假期剛結(jié)束不久厅目,也沒什么好寫的,今天就水下文章法严,講講設(shè)計模式對開發(fā)時的影響损敷,做開發(fā)到現(xiàn)在,感覺設(shè)計模式對開發(fā)的影響還是挺大的深啤。
這次就簡單談?wù)勥m配器模式拗馒。可能適配器模式感覺比較雞肋溯街,但是用到的地方還挺多的诱桂,特別是合作開發(fā)的時候。

1.適配器模式

適配器模式苫幢,作為連接兩個接口的橋梁访诱。這個概念感覺有點(diǎn)那啥垫挨,很少用接口的朋友可能就沒有什么感覺韩肝,經(jīng)常面向接口編程的朋友比較能產(chǎn)生共鳴,簡單來說九榔,就是寫一個適配器(轉(zhuǎn)換器)來對接對象哀峻。

2.適配器模式使用

java適配器模式有兩種,類適配器和對象適配器

(1)類適配器demo

類適配器主要是使用繼承的方式連接兩個接口哲泊。我們假設(shè)對接接口A和接口B剩蟀。

先寫接口B

public interface MP4{
    void play();
}

接口B的實(shí)現(xiàn)類

public class ExpensiveMP4 implement MP4{
    public void play(){
            // todo
    }
}

接口A

public interface Player{
      void action();
}

假如你的工程中有這幾個類,然后你發(fā)現(xiàn)切威,action()方法中要寫的操作育特,就是ExpensiveMP4的play()中的操作“//todo”,所以你沒必要重復(fù)再寫一次,想個辦法讓他們適配缰冤。所以犬缨,你想讓外部調(diào)用Player的時候去調(diào)用ExpensiveMP4的play,如果用類適配器的話可以這樣寫

public class ExpensiveAdapter extends ExpensiveMP4 implement Player{
    public void action(){
        play();
    }
}

這樣就把兩個接口連接起來了棉浸,不過我一般用不上類適配器怀薛,感覺這樣的做法不太靈活,而且在java中迷郑,盡量少用繼承枝恋,多用組合。而且這種寫法我覺得也不太舒服嗡害。

(2)對象適配器demo

上面的類適配器用的是“繼承”的方式去連接焚碌,這里的對象適配器用的是“組合”的方式。我們假設(shè)對接接口A和接口B就漾。就用上面的MP4接口呐能,Player接口和ExpensiveMP4類吧。

這時候我們使用對象適配器的話可以這樣寫抑堡。

public class PlayerAdapter implement Player{
    public ExpensiveMP4 expensiveMP4;
    
    public PlayerAdapter (){
        this.expensiveMP4 = new ExpensiveMP4();
    }     

    public void action(){
        if(expensiveMP4  != null){
             expensiveMP4 .play();
        }
    }

}

感覺這樣好像不太靈活摆出,expensiveMP4像死的一樣,毫無靈魂首妖,好吧偎漫,我們改改。

public class PlayerAdapter implement Player{
    public ExpensiveMP4 expensiveMP4;
    
    public PlayerAdapter (ExpensiveMP4 expensiveMP4){
        this.expensiveMP4 = expensiveMP4;
    }     

    public void action(){
        if(expensiveMP4  != null){
             expensiveMP4 .play();
        }
    }

}

這樣就比剛才好多了有缆,比剛才的代碼靈活多了象踊,但是總感覺有點(diǎn)普通,我們要把代碼寫得有點(diǎn)藝術(shù)棚壁,抽象就是藝術(shù)杯矩,好吧,再改改袖外。

public class PlayerAdapter implement Player{
    public MP4 mp4;
    
    public PlayerAdapter (MP4 mp4){
        this.mp4 = mp4;
    }     

    public void action(){
        if(mp4!= null){
             mp4.play();
        }
    }

}

可能這樣看起來會比較好一點(diǎn)吧史隆,比較容易看出如何適配兩個接口。

3.適配器模式的使用場景

(1)其中一個使用的場景是像上面所說的一樣曼验,有兩個接口泌射,你主動的想去連接著兩個接口,寫個適配器鬓照,感覺這種情況也不是很多熔酷,因?yàn)楹芏鄷r候都是些一個實(shí)體類對象調(diào)用另一個實(shí)體類對象。

(2)被動使用的情況豺裆,這種情況我可能見得比較多拒秘。舉個栗子,比較極端的栗子,你和你同伴一起合作開發(fā)躺酒,你同伴寫一個部分咙轩,你寫一個部分,現(xiàn)在兩個部分要對接阴颖。結(jié)過到對接時活喊,你們發(fā)現(xiàn)兩個人都自定義了接口,而且兩個人都開發(fā)完了量愧,都不想改钾菊,那怎么辦,只能寫一個適配器去適配兩個接口偎肃。又或者說你開發(fā)新版本的時候重新定義了接口煞烫,要和舊版本寫適配的時候,為了方便也可以使用適配器模式累颂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滞详,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子紊馏,更是在濱河造成了極大的恐慌料饥,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朱监,死亡現(xiàn)場離奇詭異岸啡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赫编,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門巡蘸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人擂送,你說我怎么就攤上這事悦荒。” “怎么了嘹吨?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵搬味,是天一觀的道長。 經(jīng)常有香客問我躺苦,道長身腻,這世上最難降的妖魔是什么产还? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任匹厘,我火速辦了婚禮,結(jié)果婚禮上脐区,老公的妹妹穿的比我還像新娘愈诚。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布炕柔。 她就那樣靜靜地躺著酌泰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匕累。 梳的紋絲不亂的頭發(fā)上陵刹,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機(jī)與錄音欢嘿,去河邊找鬼衰琐。 笑死,一個胖子當(dāng)著我的面吹牛炼蹦,可吹牛的內(nèi)容都是我干的羡宙。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼掐隐,長吁一口氣:“原來是場噩夢啊……” “哼狗热!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虑省,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤匿刮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后探颈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體僻焚,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年膝擂,在試婚紗的時候發(fā)現(xiàn)自己被綠了虑啤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡架馋,死狀恐怖狞山,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叉寂,我是刑警寧澤萍启,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站屏鳍,受9級特大地震影響勘纯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钓瞭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一驳遵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧山涡,春花似錦堤结、人聲如沸唆迁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唐责。三九已至,卻和暖如春瘾带,著一層夾襖步出監(jiān)牢的瞬間鼠哥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工看政, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肴盏,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓帽衙,卻偏偏與公主長得像菜皂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厉萝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

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