Java設(shè)計模式——適配器模式

1.定義:

適配器模式是作為兩個不兼容的接口之間的橋梁冯键。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式窄坦,它結(jié)合了兩個獨立接口的功能拴驮。這種模式涉及到一個單一的類春瞬,該類負責(zé)加入獨立的不兼容的接口。

2.意圖

將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口套啤。適配器模式使得原本接口不兼容而不能一起工作的那些類可以在一起工作宽气。

3.優(yōu)點

  • 可以讓任何兩個沒有關(guān)聯(lián)的類一起運行。
  • 提高了類的復(fù)用
  • 增加了類的透明度
  • 靈活性好

4.缺點

  • 過多地使用適配器潜沦,會讓系統(tǒng)非常零亂萄涯,不容易整體把握。
  • 由于Java至多只能繼承一個類唆鸡,所以至多只能適配一個適配者類涝影,而且目標類必須是抽象類。

5.類的適配器模式

類的適配器模式是把適配類的API轉(zhuǎn)換成為目標類的API争占。

5.1 UML類圖

image.png

Target期待調(diào)用Request方法燃逻,但是Adaptee并沒有,解決的方法是通過一個適配器Adapter類臂痕,這個類繼承Adaptee并且實現(xiàn)Target接口伯襟,把Adaptee的API與Target的API進行的適配。

5.2 使用步驟

  • 創(chuàng)建Target接口
public interface Target {
    void request();
}

  • 創(chuàng)建源類(Adaptee)
public   class Adaptee {
    //源目標握童,需要適配的方法
    public  void specificRequest(){

    }
}

  • 創(chuàng)建適配器姆怪,并且繼承Adaptee,實現(xiàn)Target
public class Adapter extends Adaptee implements Target {
    /**
     * 這里進行適配澡绩,當(dāng)調(diào)用調(diào)用request的方法的時候片效,實質(zhì)是調(diào)用了
     * Adaptee的specificRequest();
     */
    @Override
    public void request() {
        specificRequest();
    }
}
  • 具體的使用,通過Adapter類調(diào)用所需要的方法英古,解決目標類(Target)與源類(Adaptee)的沖突問題
public class AdapterPattern {
    public static void main(String[] args){
        Target target=new Adapter();
        target.request();
    }
}

6.對象的適配模式

對象的適配模式與類的適配模式相同,也是將適配類的API轉(zhuǎn)換成為目標類的API

不同點

與類的適配模式相同不同的是昙读,適配器Adapter與Adaptee的關(guān)系召调,不再是通過繼承的方式,而是通過聚合
的方式進行關(guān)聯(lián)。

6.1UML類圖

image.png

6.2使用步驟

  • 創(chuàng)建Target接口

public interface Target {
    void request();
}

  • 創(chuàng)建源類(Adaptee)
public   class Adaptee {
    //源目標唠叛,需要適配的方法
    public  void specificRequest(){

    }
}

  • 創(chuàng)建適配器只嚣,實現(xiàn)Target接口,用聚合的方式關(guān)聯(lián)Adaptee類艺沼,在構(gòu)造函數(shù)中初始化Adaptee對象册舞。

public class Adapter implements Target {

    private Adaptee mAdaptee;

    public Adapter(Adaptee adaptee){
        mAdaptee=adaptee;
    }
    @Override
    public void request() {
        mAdaptee.specificRequest();
    }
}

  • 具體的使用
public class AdapterPattern {
    public static void main(String[] args){
        Target target=new Adapter(new Adaptee());
        target.request();
    }
}

7 類和對象適配器模式的優(yōu)缺點

  • 類的適配器模式
  • 優(yōu)點 :使用方便,代碼簡單障般。
  • 缺點: 使用繼承的方式调鲸,是靜態(tài)的定義方式,存在高耦合挽荡,靈活性低的問題藐石。
  • 對象適配模式
  • 優(yōu)點: 通過對象聚合的方式,不再使用繼承的方式定拟,靈活性高于微,耦合性低。
  • 缺點:使用復(fù)雜青自,需要傳入對象的實例株依。

如果兩者都可以適用的情況下,建議優(yōu)先選擇對象的適配器模式延窜,多用組合或者聚合恋腕,少用繼承的方式。詳細的內(nèi)容需曾,請參考下方的鏈接吗坚。

參考鏈接:
http://www.reibang.com/p/9d0575311214

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市呆万,隨后出現(xiàn)的幾起案子商源,更是在濱河造成了極大的恐慌,老刑警劉巖谋减,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牡彻,死亡現(xiàn)場離奇詭異,居然都是意外死亡出爹,警方通過查閱死者的電腦和手機庄吼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來严就,“玉大人总寻,你說我怎么就攤上這事∩椅” “怎么了渐行?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵轰坊,是天一觀的道長。 經(jīng)常有香客問我祟印,道長肴沫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任蕴忆,我火速辦了婚禮颤芬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘套鹅。我一直安慰自己站蝠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布芋哭。 她就那樣靜靜地躺著沉衣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪减牺。 梳的紋絲不亂的頭發(fā)上豌习,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音拔疚,去河邊找鬼肥隆。 笑死,一個胖子當(dāng)著我的面吹牛稚失,可吹牛的內(nèi)容都是我干的栋艳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼句各,長吁一口氣:“原來是場噩夢啊……” “哼吸占!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凿宾,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤矾屯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后初厚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體件蚕,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年产禾,在試婚紗的時候發(fā)現(xiàn)自己被綠了排作。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡亚情,死狀恐怖妄痪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情楞件,我是刑警寧澤拌夏,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布僧著,位于F島的核電站,受9級特大地震影響障簿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜栅迄,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一站故、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毅舆,春花似錦西篓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至悦即,卻和暖如春吮成,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辜梳。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工粱甫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人作瞄。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓茶宵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宗挥。 傳聞我的和親對象是個殘疾皇子乌庶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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