java-設計模式-適配器模式

適配器模式是 將一個類的接口 轉換 成 客戶 需要的接口的一種模式。

 

來個類圖:

 

下面有個實例,我們中國的電壓是220V的,但是手機的電壓很多是12V的,那手機需要進行充電,怎麼辦呢?來個電源適配器

中國電源類:


/**
 * 提供電源 - 中國電源
 */
public class ChinaElectricSource {

  /**
     * 提供電壓 只能輸出220V的電壓
     * @return
     */
    public int offerV(){
        return 220;
    }
}

中國電源它只提供 220V的接口,但是手機需要的是12V的接口,中國電源不滿足這個需求。

手機電源適配器類:


/**
 * 提供電源 - 電源適配器
 */
public class PhoneElectricAdapter extends ChinaElectricSource{

    /**
     * 改造者
     */
    private Adaptee adaptee = new Adaptee();

    /**
     * 提供12V電源
     */
    public int offerV() {
        return adaptee.offerV12(super.offerV());
    }
}

電源適配器類中 繼承了中國電源類,重寫了offerV方法,需要保證提供的電壓是12V的。這個12V是怎麼實現的呢,是通過Adaptee改造者實現的。

改造者(被適配的對象)類:

/**
 * 改造者
 */
public class Adaptee {
    public int offerV12(int offerV){
        System.out.println("提供的電壓 "+offerV);
        System.out.println("經過一序列 轉換 轉換成 12V了");
        return 12;
    }
}

這個改造者就是電源適配器的內部工作原理了。

來個測試:

    public static void main(String[] args) {
        System.out.println("*************手機需要充電 需要12V 的電源");
        System.out.println("*************但是中國的電源額定電源爲 220V");
        ChinaElectricSource source = new PhoneElectricAdapter();
        System.out.println("*************需要的電壓 "+source.offerV());
    }

測試結果:

*************手機需要充電 需要12V 的電源
*************但是中國的電源額定電源爲 220V
提供的電壓 220
經過一序列 轉換 轉換成 12V了
*************需要的電壓 12

 

我覺得設計模式不是古板的東西,設計模式是一種思想,這個思想可以靈活變通。

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