適配器模式

本文參考自: 《JAVA與模式》之適配器模式

1.作用

將一個類的接口轉(zhuǎn)換成客戶端所需要的另一個接口,從而使原本接口不匹配的兩個類可以一起工作拉庵。

2.分類
  • 類適配器
  • 對象適配器
  • 缺省適配模式
3.類適配器

涉及的三個類

  • Adaptee: 需要被適配的類
  • Adapter: 用來適配Adaptee的適配器
  • Target: 目標(biāo)類

實現(xiàn)方式
使用Adapter繼承Adaptee偎漫,繼承Adaptee中所有的方法世吨,并增加Target所需要的方法祖能。從而將Adaptee和Target進(jìn)行適配赁项。

具體代碼
Adaptee

public class Adaptee {
    public void sampleOperation1() {
        
    }
}

Adapter

public class Adapter extends Adaptee{
    public void sampleOperation2() {
        
    }
}

Target

public class Target {
    
    public Adapter adapter;
    
    public Target(Adapter adapter) {
        this.adapter = adapter;
    }
    
    public void sampleOperation1() {
        adapter.sampleOperation1();
    }
    public void sampleOperation2() {
        adapter.sampleOperation2();
    }
    
}
4.對象適配器

涉及的三個類

  • Adaptee: 需要被適配的類
  • Adapter: 用來適配Adaptee的適配器
  • Target: 目標(biāo)類

實現(xiàn)方式

與類適配器存在區(qū)別的地方時澳迫,在對象適配器中局齿,Adapter采用組合的方式對Adaptee進(jìn)行拓展,而不是采用繼承的方法橄登。具體看如下代碼抓歼。

具體代碼
Adaptee

public class Adaptee {
    public void sampleOperation1() {
        
    }

}

Adapter

public class Adapter{
    private Adaptee adaptee;
    
    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }
    
    public void sampleOperation1() {
         adaptee.sampleOperation1();
    }
    
    public void sampleOperation2() {
        
    }
}

Target

public class Target {
    private Adapter adapter;
    
    public Target(Adapter adapter) {
        this.adapter = adapter;
    }
    
    public void sampleOperation1() {
        adapter.sampleOperation1();
    }
    
    public void sampleOperation2() {
        adapter.sampleOperation2();
    }
}
5. 類適配器與對象適配器優(yōu)缺點比較
    • 類適配器繼承的方式對Adaptee進(jìn)行適配,只能對一個類進(jìn)行適配
    • 對象適配器采用組合的方式進(jìn)行適配示绊,這樣可以同時適配多個源锭部,只要將需要適配的對象傳進(jìn)來就行了
    • 類適配器可以更容易的對Adaptee中的方式進(jìn)行更改。
    • 對象適配器不能直接更改Adaptee中的方法面褐。想要修改的話拌禾,只能新建一個子類繼承Adaptee,然后再子類中修改Adaptee中的方法展哭,再對子類進(jìn)行適配
5.缺省適配模式

作用
這是一種特殊卻常用的適配器模式湃窍。
產(chǎn)生的原因是:對于一個接口,里面有一些方法是主要且常用的匪傍,很多子類都需要實現(xiàn)這類方法您市,但是有一些方法是不常用的,子類大部分時間不需要實現(xiàn)這些方法役衡。如果子類直接實現(xiàn)接口茵休,那么所有的方法都需要實現(xiàn),不常用的方法就需要寫一個空實現(xiàn)手蝎,這樣就會造成很多冗余的代碼榕莺。
解決辦法是:用一個抽象類實現(xiàn)接口,覆蓋里面不常用的方法棵介,子類直接繼承抽象類钉鸯,這樣子類就不需要實現(xiàn)所有的方法,只要實現(xiàn)自己需要的核心方法即可邮辽。

6. 適配器模式的優(yōu)缺點

優(yōu)點

1. 更好的復(fù)用性
新對象可以通過適配器模式直接使用原有的類唠雕,更好的對現(xiàn)有代碼進(jìn)行復(fù)用贸营。
2. 更好的拓展性
通過適配器模式,可以使得對某個類的后續(xù)拓展更加簡單和方便岩睁。

缺點

過多的使用適配器钞脂,會讓系統(tǒng)非常零亂,不易整體進(jìn)行把握捕儒。比如芳肌,明明看到調(diào)用的是A接口,其實內(nèi)部被適配成了B接口的實現(xiàn)肋层,一個系統(tǒng)如果太多出現(xiàn)這種情況亿笤,無異于一場災(zāi)難。因此如果不是很有必要栋猖,可以不使用適配器净薛,而是直接對系統(tǒng)進(jìn)行重構(gòu)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒲拉,一起剝皮案震驚了整個濱河市肃拜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雌团,老刑警劉巖尸疆,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拷恨,死亡現(xiàn)場離奇詭異蹋艺,居然都是意外死亡湖笨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門灵寺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來曼库,“玉大人,你說我怎么就攤上這事略板』倏荩” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵叮称,是天一觀的道長种玛。 經(jīng)常有香客問我,道長瓤檐,這世上最難降的妖魔是什么赂韵? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮距帅,結(jié)果婚禮上右锨,老公的妹妹穿的比我還像新娘括堤。我一直安慰自己碌秸,他們只是感情好绍移,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著讥电,像睡著了一般蹂窖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恩敌,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天瞬测,我揣著相機與錄音,去河邊找鬼纠炮。 笑死月趟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恢口。 我是一名探鬼主播孝宗,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耕肩!你這毒婦竟也來了因妇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤猿诸,失蹤者是張志新(化名)和其女友劉穎婚被,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梳虽,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡址芯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了窜觉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片是复。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖竖螃,靈堂內(nèi)的尸體忽然破棺而出淑廊,到底是詐尸還是另有隱情,我是刑警寧澤特咆,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布季惩,位于F島的核電站,受9級特大地震影響腻格,放射性物質(zhì)發(fā)生泄漏画拾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一菜职、第九天 我趴在偏房一處隱蔽的房頂上張望青抛。 院中可真熱鬧,春花似錦酬核、人聲如沸蜜另。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽举瑰。三九已至捣辆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間此迅,已是汗流浹背汽畴。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耸序,地道東北人忍些。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像坎怪,于是被迫代替她去往敵國和親坐昙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

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