適配器模式

先直觀感受下什么叫適配器

Type-C Pro Hub

適配器模式有類的適配器模式和對象的適配器模式兩種不同的形式。

類適配器模式

類適配器模式
/**
 * 這是一個TypeC的適配器,作為適配器器钟,首先我應當具備讀取TypeC的能里谴餐,其次我還可以讀取USB
 * 轉(zhuǎn)換為代碼的話就是TypeCAdapter extends TypeC implements USB
 *
 */
public class TypeCAdapter extends TypeC implements USB{

    @Override
    public void readUSB() {

        System.out.println("讀取類U盤的數(shù)據(jù)");

        this.readTypeC();
    }
}
package adapter;

//我期望我的MacBook可以讀取我僅支持USB口的U盤數(shù)據(jù)
public interface USB {

    public void readUSB();
}
package adapter;

/**
 * 這是一個TypeC的適配器,作為適配器,首先我應當具備讀取TypeC的能里宿刮,其次我還可以讀取USB
 * 轉(zhuǎn)換為代碼的話就是TypeCAdapter extends TypeC implements USB
 *
 */
public class TypeCAdapter extends TypeC implements USB{

    @Override
    public void readUSB() {

        System.out.println("讀取類U盤的數(shù)據(jù)");

        this.readTypeC();
    }
}
package adapter;

public class UDisk {

    public static void main(String[] args){

        TypeCAdapter adapter = new TypeCAdapter();
        adapter.readUSB();
    }
}

對象適配器模式

對象適配器模式

package adapter;

/**
 * 我現(xiàn)有一臺可以讀取TypeC數(shù)據(jù)的MacBook
 * 也就是即將被適配的對象互站,未來需要用它來讀取USB的數(shù)據(jù)
 */
public class TypeC {

    public void readTypeC(){

        System.out.println("讀取TypeC的數(shù)據(jù)");
    }
}
package adapter;

/**
 * 對象適配器
 */
public class TypeCObjectAdapter {

    private TypeC typeC;

    public TypeCObjectAdapter(TypeC typeC){

        this.typeC = typeC;
    }

    /**
     * 此處沒有直接繼承TypeC,而是新建方法僵缺,代理TypeC的readTypeC方法
     */
    public void readTypeC(){

        typeC.readTypeC();
    }

    /**
     * 此處適配器類提供readUSB的方法
     */
    public void readUSB(){

        this.readTypeC();
        System.out.println("讀取類USB的數(shù)據(jù)");
    }
}

類適配器和對象適配器的權(quán)衡
1.類適配器使用對象繼承的方式胡桃,是靜態(tài)的定義方式;對象適配器使用對象組合的方式磕潮,是動態(tài)組合的方式翠胰;
2.對于類適配器,由于適配器直接繼承類adaptee自脯,使得適配器不能和adaptee的子類一起工作之景,因為繼承是靜態(tài)的關(guān)系,當適配器繼承了adaptee后膏潮,就不能再去處理adaptee的子類了锻狗;而對象適配器,可以把源類和它的子類都適配到目標接口焕参。因為對象適配器采用的是對象組合的關(guān)系轻纪,只要對象類型正確,是不是子類都無所謂叠纷;
3.對于類適配器可以重新定義adaptee的部分行為桐磁,相當于子類覆蓋父類的部分實現(xiàn)方法;
4.對于類適配器讲岁,僅僅引入了一個對象我擂,并不需要額外的引用來間接得到Adaptee。對于對象適配器缓艳,需要額外的引用來間接得到Adaptee校摩。

建議盡量使用對象適配器的實現(xiàn)方式,多用合成/聚合阶淘、少用繼承衙吩。當然,具體問題具體分析溪窒,根據(jù)需要來選用實現(xiàn)方式坤塞,最適合的才是最好的。

適配器模式的優(yōu)點
1.更好的復用性
.2系統(tǒng)需要使用現(xiàn)有的類澈蚌,而此類的接口不符合系統(tǒng)的需要摹芙。那么通過適配器模式就可以讓這些功能得到更好的復用。
3.更好的擴展性
.4在實現(xiàn)適配器功能的時候宛瞄,可以調(diào)用自己開發(fā)的功能浮禾,從而自然地擴展系統(tǒng)的功能。

適配器模式的缺點
過多的使用適配器,會讓系統(tǒng)非常零亂盈电,不易整體進行把握蝴簇。比如,明明看到調(diào)用的是A接口匆帚,其實內(nèi)部被適配成了B接口的實現(xiàn)熬词,一個系統(tǒng)如果太多出現(xiàn)這種情況,無異于一場災難吸重。因此如果不是很有必要荡澎,可以不使用適配器,而是直接對系統(tǒng)進行重構(gòu)晤锹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摩幔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鞭铆,更是在濱河造成了極大的恐慌或衡,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件车遂,死亡現(xiàn)場離奇詭異封断,居然都是意外死亡,警方通過查閱死者的電腦和手機舶担,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門坡疼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衣陶,你說我怎么就攤上這事柄瑰。” “怎么了剪况?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵教沾,是天一觀的道長。 經(jīng)常有香客問我译断,道長授翻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任孙咪,我火速辦了婚禮堪唐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翎蹈。我一直安慰自己淮菠,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布杨蛋。 她就那樣靜靜地躺著兜材,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逞力。 梳的紋絲不亂的頭發(fā)上曙寡,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音寇荧,去河邊找鬼举庶。 笑死,一個胖子當著我的面吹牛揩抡,可吹牛的內(nèi)容都是我干的户侥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼峦嗤,長吁一口氣:“原來是場噩夢啊……” “哼蕊唐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起烁设,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤替梨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后装黑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體副瀑,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年恋谭,在試婚紗的時候發(fā)現(xiàn)自己被綠了糠睡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡疚颊,死狀恐怖狈孔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情材义,我是刑警寧澤除抛,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站母截,受9級特大地震影響到忽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜清寇,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一喘漏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧华烟,春花似錦翩迈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堤魁。三九已至,卻和暖如春返十,著一層夾襖步出監(jiān)牢的瞬間妥泉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工洞坑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盲链,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓迟杂,卻偏偏與公主長得像刽沾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子排拷,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

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