Android設計模式--適配器模式--Adapter入門

來源:互聯網
上載者:User

標籤:des   android   style   http   ar   color   os   使用   sp   

今天,我們要梳理一下java設計模式的適配器模式。

適配器嘛,想一想我們平常用的電來源配接器就知道了,就是把兩個不相容的東西搞通嘛,可以相互聯絡。

在java中也一樣,就是讓兩個需要一起協調的類,通過適配器協調起來就行了,就是講一個類的介面,轉換成客戶期望的另一個介面。適配器讓原本介面不相容的類可以合作無間。
首先我們來看兩個圖,我們通常會有這樣一個問題,廠商給我介面和我們現有介面對接不起來、舊的資料和新的資料接不起來等等。

解決這問題,在不改變原來兩個介面的情況下,我們完全可以在寫一個類,做個中間人,就像翻譯官一樣,我會兩國語言,你們說話都經過我來就行了,這個適配器實現了你說期望的介面,而且這個類也能和廠商的介面溝通。

總而言之,我們經常可以看到適配器出現在我們的代碼中,如在Android便充分利用了適配器來實現view和資料的聯絡,如:ListView和BaseAdapter。
我們舉一下一個小例子來說明一下適配器模式。
就拿我們首頁的圖來看,
我們國家的標準電壓是220v,而我們筆記本所需的電壓就15v左右;所以肯定不可以把我們的交流電直接接到筆記本上,這時,我們得有一個變壓器(電來源配接器)就可以了,把220v電壓轉換成15v;

下面介紹一下代碼:

筆記本類

/** *  * 筆記本 * @author studyjun * */public class Jotter {         private VoltageAdapter adapter;         public VoltageAdapter getAdapter() {        return adapter;    }     public void inputVoltage(){        System.out.println("筆記本得到輸入電壓" +adapter.transformVoltage()+"v");    }         public void setAdapter(VoltageAdapter adapter){        this.adapter =adapter;    }}

供電器220v,提供220v的電壓

/** *  * 供電器 * @author studyjun * */public class PowerSupplyDevice {     //標準電壓    private int standardVoltage =220;              /**     * 輸出220v電壓     * @return     */    public int powerSupply(){        System.out.println("標準電壓提供220v");        return standardVoltage;    }}

適配器介面,有個電壓轉換介面

/** *  * 電來源配接器 * @author studyjun * */public interface VoltageAdapter {         /**     * 轉換電壓     */    public int transformVoltage();}

筆記本電來源配接器類,把220v轉為筆記本的15v的電壓

/** *  * 電來源配接器 * @author studyjun * */public class MyVoltageAdapter implements VoltageAdapter{         private int voltage; //電壓    /**     *  標準電壓裝置220v     */    private PowerSupplyDevice powerSupplyDevice ;              public MyVoltageAdapter(PowerSupplyDevice powerSupplyDevice) {        this.powerSupplyDevice = powerSupplyDevice;    }       public int getVoltage() {        return voltage;    }       public void setVoltage(int voltage) {        this.voltage = voltage;    }         public PowerSupplyDevice getPowerSupplyDevice() {        return powerSupplyDevice;    }       public void setPowerSupplyDevice(PowerSupplyDevice powerSupplyDevice) {        this.powerSupplyDevice = powerSupplyDevice;    }      /**     * 轉換電壓     */    public int transformVoltage(){        int voltage = powerSupplyDevice.powerSupply();        int lowerVoltage = voltage/14;        System.out.println("轉化中電壓為="+lowerVoltage+"v");        return lowerVoltage;             }}

測試

public class Test {         public static void main(String[] args) {                 Jotter jt = new Jotter();        PowerSupplyDevice powerSupplyDevice = new PowerSupplyDevice();        VoltageAdapter adapter=new MyVoltageAdapter(powerSupplyDevice);        jt.setAdapter(adapter);        jt.inputVoltage();    }     }

執行結果

講到這裡,我們總結一下適配器模式的優點和缺點:
優點:
1、可以將兩個不同的介面聯絡起來,耦合性低。
2、增加了類的透明性和複用性,將具體的實現封裝在適配者類中,對於用戶端類來說是透明的,而且提高了適配者的複用性
3、靈活性和擴充性都非常好,符合開閉原則

類適配器的缺點:
1、對於Java、C#等不支援多重繼承的語言,一次最多隻能適配一個適配者類,而且目標抽象類別只能為介面,不能為類,其使用有一定的局限性,不能將一個適配者類和他的子類同時適配到目標介面。
對象適配器還有的優點:
2、與類適配器模式相比,要想置換適配者類的方法就不容易。

原始碼下載:DesignPattern

 

Android設計模式--適配器模式--Adapter入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.