適配器模式

適配器模式

適配器模式屬於結構型模式,這個模式將一個類的接口轉換成客戶希望的另外的一個接口。該模式使得原本兩個不兼容的接口可以一起工作。

適配器模式適用於希望利用已經存在的功能,但是接口又和已經存在的功能不適配的情況。例如對於電源來說,假設現在有兩種電源接口,一種輸出電壓是220V,另一種是110V的。現在只有220V的電源,怎麼給110V的電器充電呢?此時可以利用電源適配器將220V的電壓轉換爲110V的,這種其實就是利用了適配器模式的思想。

UML類圖

這裏寫圖片描述

如圖所示,InterfaceOf110V是110V電壓電源的接口,InterfaceOf220V是220V電壓電源的接口, VoltageAdapter是將220V電壓電源轉換爲110V電壓電源的適配器。接下來看具體代碼實現:

代碼實現

110V電壓電源接口-InterfaceOf110V

/**
 * <p>文件描述: 110V電壓接口</p>
 *
 * @Author luanmousheng
 * @Date 17/7/11 下午2:38
*/
public interface InterfaceOf110V {

    /**
     * 通過110V電壓充電
     */
    void chargeWith110V();
}

220V電壓電源接口-InterfaceOf220V

/**
 * <p>文件描述: 220V電壓接口</p>
 *
 * @Author luanmousheng
 * @Date 17/7/11 下午2:36
*/
public interface InterfaceOf220V {
    /**
     * 通過220V電壓充電
     */
    void chargeWith220V();
}

220V電壓電源接口的實現-標準電壓電源

/**
 * <p>文件描述: 標準電壓(220V)</p>
 *
 * @Author luanmousheng
 * @Date 17/7/11 下午2:44
*/
public class StandardVoltage implements InterfaceOf220V{
    @Override
    public void chargeWith220V() {
        System.out.println("標準220V充電");
    }
}

電源電壓適配器-VoltageAdapter

/**
 * <p>文件描述: 電壓適配器</p>
 *
 * @Author luanmousheng
 * @Date 17/7/11 下午3:02
*/
public class VoltageAdapter implements InterfaceOf110V {

    //需要適配的對象
    private InterfaceOf220V standardVoltage = new StandardVoltage();

    @Override
    public void chargeWith110V() {
        //將調用適配到standardVoltage
        standardVoltage.chargeWith220V();
        System.out.println("適配器處理:適配220V到110V");
    }
}

適配器模式Demo

/**
 * <p>文件描述: 適配器Demo</p>
 *
 * @Author luanmousheng
 * @Date 17/7/11 下午3:05
*/
public class AdapterPatternDemo {
    public static void main(String[] args) {
        InterfaceOf110V interfaceOf110V = new VoltageAdapter();
        interfaceOf110V.chargeWith110V();
    }
}

Demo轉出爲:

標準220V充電
適配器處理:適配220V到110V

該例中原本110V和220V的電壓電源是不兼容的,適配器模式利用了已經存在的接口(220V電壓電源),複用已經存在的功能,適配器做的功能是將調用轉到已經存在的功能上去。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章