java設(shè)計(jì)模式06(適配器模式)

適配器模式:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。適配器模式讓那些接口不兼容的類可以一起工作。讓一個(gè)類的接口和另一個(gè)類的接口匹配起來(lái),而無(wú)須修改原來(lái)的適配者接口和抽象目標(biāo)類接口。
適配器模式的別名為包裝器模式,它既可以作為類結(jié)構(gòu)型模式,也可以作為對(duì)象結(jié)構(gòu)型模式。在適配器模式的定義中所提及的接口是指廣義的接口,它可以表示一個(gè)方法或者方法的集合。

適配器模式的結(jié)構(gòu)和實(shí)現(xiàn):
1.Target(目標(biāo)抽象類):目標(biāo)抽象類定義客戶所需的接口,可以是一個(gè)抽象類或接口,也可以是具體類。 在類適配器中,由于java語(yǔ)言不支持多重繼承,它只能是接口。
2.Adapter(適配器類):它可以調(diào)用另一個(gè)接口,作為一個(gè)轉(zhuǎn)換器,對(duì)適配者和目標(biāo)抽象類進(jìn)行適配。適配器Adapter是適配器模式的核心,在類適配器中,它可以通過(guò)實(shí)現(xiàn)Target接口并繼承Adaptee類來(lái)使二 者產(chǎn)生聯(lián)系;在對(duì)象適配其中,它通過(guò)繼承Target并關(guān)聯(lián)一個(gè)Adaptee對(duì)象使二者聯(lián)系。
3.Adaptee(適配者類):即被適配的角色,它定義了一個(gè)已經(jīng)存在的接口,這個(gè)接口需要適配,適配者類一般是一個(gè)具體類,包含了客戶希望使用的業(yè)務(wù)方法,在某 些情況下甚至沒(méi)有適配者類的源碼。

適配器模式包括類適配器和對(duì)象適配器。在對(duì)象適配器模式中,適配器與適配者之間是關(guān)聯(lián)關(guān)系;在類適配器模式中,適配器與適配者之間是繼承(或?qū)崿F(xiàn))關(guān)系。
1.類適配器:
目標(biāo)抽象類:

public interface Target {

    public void request();
}

適配器類:

public class Adapter extends Adaptee implements Target {

    @Override
    public void request() {
        super.specifiRequest();
    }

}

適配者類:

public class Adaptee {

    public void specifiRequest() {
        System.out.println("類適配器適配成功!");
    }
}

Test:

public class Test {

    public static void main(String[] args) {
        //類適配器
        Adapter adapter=new Adapter();
        adapter.request();
    }
}

2.對(duì)象適配器:
目標(biāo)抽象類:

public abstract class Target {

    public abstract void request();
}

適配器類:

public class Adapter extends Target {
    
    private Adaptee adaptee;
    
    public Adapter(Adaptee adaptee) {
        this.adaptee=adaptee;
    }

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

}

適配者類:

public class Adaptee {

    public void specifiRequest() {
        System.out.println("對(duì)象適配器適配成功!");
    }
}

Test:

public class Test {

    public static void main(String[] args) {
        //對(duì)象適配器
        Adapter adapter=new Adapter(new Adaptee());
        adapter.request();
    }

}
最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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