適配器模式

01 定義

適配器模式:將一個(gè)類(lèi)的接口,轉(zhuǎn)換成客戶期望的另一個(gè)接口。適配器讓原本接口不兼容的類(lèi)可以合作無(wú)間。

02 情景

現(xiàn)在很多電腦只有HDMI接口,想要擴(kuò)展的顯示器是VGA接口,這個(gè)時(shí)候我們需要一個(gè)HDMI轉(zhuǎn)VGA的轉(zhuǎn)接線。這個(gè)轉(zhuǎn)接線就是一個(gè)適配器。

03 類(lèi)圖

AdapterPattern.png

04 Class

// 鴨子接口:目標(biāo)接口,客戶期待的接口。目標(biāo)可以是具體的或抽象的類(lèi),也可以是接口。
public interface Duck {
    public void quack();
    public void fly();
}
// 小黃鴨:具體目標(biāo)
public class YellowDuck implements Duck {
    @Override
    public void quack() {
        System.out.println("Quack");
    }
    @Override
    public void fly() {
        System.out.println("I'm flying");
    }
}
// 火雞接口:Adaptee 需要適配的類(lèi)的接口
public interface Turkey {
    public void gobble();
    public void fly();
}
// 野生火雞:Adaptee 具體的被適配者
public class WildTurkey implements Turkey {
    @Override
    public void gobble() {
        System.out.println("Gobble gobble");
    }
    @Override
    public void fly() {
        System.out.println("I'm flying a short distance");
    }
}
// 火雞適配器:適配器(Adapter):通過(guò)包裝一個(gè)需要適配的對(duì)象,把原接口轉(zhuǎn)換成目標(biāo)接口。
public class TurkeyAdapter implements Duck {

    private Turkey turkey;

    public TurkeyAdapter(Turkey turkey) {
        this.turkey = turkey;
    }

    @Override
    public void quack() {
        turkey.gobble();
    }

    @Override
    public void fly() {
        turkey.fly();
    }
}

05 測(cè)試

YellowDuck yellowDuck = new YellowDuck();
WildTurkey wildTurkey = new WildTurkey();
TurkeyAdapter turkeyAdapter = new TurkeyAdapter(wildTurkey);

System.out.println("The Turkey say...");
wildTurkey.gobble();
wildTurkey.fly();

System.out.println("\nThe YellowDuck say...");
yellowDuck.quack();
yellowDuck.fly();

System.out.println("\nThe TurkeyAdapter say...");
// 這里我們調(diào)用的目標(biāo)接口的方法,而適配器內(nèi)部卻是調(diào)用的被適配者的方法。
turkeyAdapter.quack();
turkeyAdapter.fly();
TestResult.png
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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