適配器模式(Adapter Pattern)

1. 介紹

1.1 定義

將一個(gè)類的接口轉(zhuǎn)換成客戶期望的另一個(gè)接口

應(yīng)用實(shí)例: 電源適配器

1.2 主要作用

使原本接口不兼容的類可以一起工作

1.3 形式

適配器模式的形式分為:類的適配器模式 & 對象的適配器模式

2.模式原理

image.png
public interface Target {
    void request();
}

public class ConcreteTarget implements Target {
    @Override
    public void request() {
        System.out.println("concreteTarget現(xiàn)有目標(biāo)方法");
    }
}

public class Adaptee {
    public void adapteeRequest() {
        System.out.println("被適配者的方法");
    }
}

2.1類的適配器模式

繼承Adaptee 被適配者

public class Adapter extends Adaptee implements Target {
    @Override
    public void request() {
        //...
        super.adapteeRequest();
        //...
    }
}

2.2對象的適配器模式

組合Adaptee 被適配者

public class Adapter implements Target{
    private Adaptee adaptee = new Adaptee();

    @Override
    public void request() {
        //...
        adaptee.adapteeRequest();
        //...
    }
}

客戶端調(diào)用

public class Test {
    public static void main(String[] args) {
        Target target = new ConcreteTarget();
        target.request();

        Target adapterTarget = new Adapter();
        adapterTarget.request();
    }
}

結(jié)果輸出

concreteTarget目標(biāo)方法
被適配者的方法

3.實(shí)例講解

接下來我用一個(gè)實(shí)例來對代理模式進(jìn)行更深一步的介紹。
實(shí)例概況 220v交流電通過電源適配器輸出5v直流電

步驟1:創(chuàng)建Target 接口 5v直流電
public interface DC5 {
    int outputDC5V();
}
步驟2:創(chuàng)建Adaptee被適配者 220v交流電
public class AC220 {
    public int outputAC220V(){
        int output = 220;
        System.out.println("輸出交流電"+output+"V");
        return output;
    }
}
步驟3:創(chuàng)建Adapter 電源適配器
//使用對象的適配器模式
public class PowerAdapter implements DC5{
    private AC220 ac220 = new AC220();

    @Override
    public int outputDC5V() {
        int adapterInput = ac220.outputAC220V();
        //變壓器...
        int adapterOutput = adapterInput/44;

        System.out.println("使用PowerAdapter輸入AC:"+adapterInput+"V"+"輸出DC:"+adapterOutput+"V");
        return adapterOutput;
    }
}
步驟4:客戶端調(diào)用
public class Test {
    public static void main(String[] args) {
        DC5 dc5 = new PowerAdapter();
        dc5.outputDC5V();
    }
}

結(jié)果輸出

輸出交流電220V
使用PowerAdapter輸入AC:220V  輸出DC:5V

4.優(yōu)缺點(diǎn)

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

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

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