Android設(shè)計(jì)模式之(18)----適配器模式

適配器模式

適配器模式數(shù)據(jù)結(jié)構(gòu)型設(shè)計(jì)模式.

適配器模式主要用于將2個(gè)不能兼容的物件結(jié)合在一起.分為類適配器對(duì)象適配器.

比如由于2個(gè)類因?yàn)榻涌趩栴}沒辦法在一起工作,可以使用適配器模式將其結(jié)合起來.

比如生活中的電源適配器,A物品需要100V電壓,B物品需要220V電壓,直接作用其中有一個(gè)無法達(dá)到效果,而電源適配器支持100~220V就可以完美解決這樣的問題.

應(yīng)用場(chǎng)景

  • 重構(gòu)過程中要具體使用當(dāng)前某個(gè)類,但是因?yàn)榻涌趩栴}無法兼容
  • 具有統(tǒng)一輸出性質(zhì),輸入類型不確定的對(duì)象
  • 第三方組件接口定義與自身的不同,在不修改自身接口的情況下要使用第三方組件接口

代碼示例(類適配器)

(一)獲取電壓的接口

public interface Voltage {

    void getVoltage();
}

(二)物件A實(shí)現(xiàn)電壓接口獲取220V電壓

public class Voltage220 implements Voltage {
    @Override
    public void getVoltage() {
        System.out.print("\n"+"正常物件B:獲取220的電壓");
    }
}

(三)物件B的110V電壓(重構(gòu)過程中需要使用它又不能破壞之前的接口)


    public  void  getVoltage100(){
        System.out.print("\n"+"特殊物件B:獲取100的電壓");
    }
}


(四)電源適配器

public class PowerAdapter extends Voltage100 implements Voltage{
    @Override
    public void getVoltage() {
        super.getVoltage100();
    }
}

繼承原本的110V電壓并且實(shí)現(xiàn)正常220V電壓,統(tǒng)一到一個(gè)類進(jìn)行處理

調(diào)用方式

        Voltage voltage=new Voltage220();
        voltage.getVoltage();

        Voltage voltage1=new PowerAdapter();
        voltage1.getVoltage();

根據(jù)自己的需要來選擇創(chuàng)建符合需要的子類實(shí)現(xiàn)具體功能。

代碼示例(對(duì)象適配器)

在上述的類適配器中使用的方式是先繼承在實(shí)現(xiàn)具體的方法來進(jìn)行適配,而對(duì)象適配器中則直接將對(duì)象進(jìn)行關(guān)聯(lián),更為靈活方便.

(一)直接關(guān)聯(lián)被適配類的適配器

public class AbstractPowerAdapter implements  Voltage {

    //適配類為100V電壓
    private  Voltage100 voltage100;

    public AbstractPowerAdapter(Voltage100 voltage100) {
        this.voltage100 = voltage100;
    }

    @Override
    public void getVoltage() {
        voltage100.getVoltage100();
    }
}

調(diào)用方式

  Voltage100 voltage3=new Voltage100();
        Voltage voltage4=new AbstractPowerAdapter(voltage3);
        voltage4.getVoltage();

顯示結(jié)果如同上述的類適配器一致.

對(duì)象適配器直接在構(gòu)造參數(shù)中將適配的類進(jìn)行關(guān)聯(lián),這樣我們可以關(guān)聯(lián)多個(gè)不同的適配類.

總結(jié)

  • 優(yōu)點(diǎn)

  • 客戶端調(diào)用同一個(gè)接口方法

  • 目標(biāo)類與適配類解耦

  • 適配器可以將不同的適配類都適配到目標(biāo)接口

  • 缺點(diǎn)

  • 整體修改適配器的實(shí)現(xiàn)過程復(fù)雜

  • 項(xiàng)目中大量使用適配器模式,會(huì)讓項(xiàng)目復(fù)雜.不利于整體維護(hù)使用

github源碼地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 我的筆記本電腦的工作電壓是20V,而我國的家庭用電是220V,如何讓20V的筆記本電腦能夠在220V的電壓下工作?...
    justCode_閱讀 1,503評(píng)論 0 5
  • 我的筆記本電腦的工作電壓是20V,而我國的家庭用電是220V,如何讓20V的筆記本電腦能夠在220V的電壓下工作?...
    justCode_閱讀 870評(píng)論 0 1
  • 前言:設(shè)計(jì)模式之結(jié)構(gòu)型模式軟件模式與具體的應(yīng)用領(lǐng)域無關(guān),也就是說無論你從事的是移動(dòng)應(yīng)用開發(fā)、桌面應(yīng)用開發(fā)、Web ...
    markfork閱讀 2,567評(píng)論 4 13
  • 在日常開發(fā)過程中時(shí)常需要用到設(shè)計(jì)模式,但是設(shè)計(jì)模式有23種,如何將這些設(shè)計(jì)模式了然于胸并且能在實(shí)際開發(fā)過程中應(yīng)用得...
    AntDream閱讀 5,755評(píng)論 3 13
  • 一:生活中一些實(shí)例? 簡(jiǎn)單說現(xiàn)在家庭中使用的電器一般要求電壓是220V的,但是有的電器使用要求的電壓是110V,怎...
    楓葉下的陽光閱讀 1,438評(píng)論 0 1

友情鏈接更多精彩內(nèi)容