Java設(shè)計(jì)模式---適配器模式

舉個(gè)老栗子

插兩個(gè)孔的插頭怎么能插入三個(gè)孔的插座呢,,這肯定都知道,中間加個(gè)轉(zhuǎn)接頭。
一頭被兩個(gè)孔的插一頭插入三個(gè)孔的插座就可以了。。 那么 這個(gè)轉(zhuǎn)接頭就是個(gè)適配器了。。。。


u=2292860942,612161708&fm=26&gp=0.jpg

下面通過(guò)代碼來(lái)展示一下這個(gè)邏輯:

先是三孔插座:

/**
 * 三孔插座
 */
public class ThreeHoleSocket {
    private ThreeHolePlug threeHolePlug;

    public ThreeHoleSocket(ThreeHolePlug threeHolePlug){
        this.threeHolePlug = threeHolePlug;
    }

    /**
     * 充電
     */
    public void charge(){
        if(threeHolePlug != null){
            threeHolePlug.insert();
        }else{
            System.out.println("插頭未插入");
        }
    }
}

三孔插座要插入一個(gè)三孔的插頭才能進(jìn)行充電,只要是三孔的不管什么電器都可以,所以我們有一個(gè)三孔插頭節(jié)接口:

public interface ThreeHolePlug {
    void insert();
}

這個(gè)接口里有個(gè)插入方法,就是用來(lái)插入三孔插座的。
接下來(lái)就是一個(gè)兩孔插頭了:

/**
 * 兩孔插頭
 */
public class TwoHolePlug {

    public void charge(){
        System.out.println("兩孔插頭--充電中");
    }
}

兩孔插頭也有一個(gè)充電的方法,但得要插入才能充電,現(xiàn)在三孔插座需要的是一個(gè)三孔類型的插座,但這個(gè)兩孔的是不能夠插進(jìn)去的,這可怎么辦。。。。。。。
這個(gè)時(shí)候就得來(lái)個(gè)轉(zhuǎn)接頭適配器了,先看看代碼:

/**
 * 一面三孔一面兩孔適配器
 */
public class ThreeHoleAdapter implements ThreeHolePlug{

    private TwoHolePlug twoHolePlug;

    public ThreeHoleAdapter(TwoHolePlug twoHolePlug){
        this.twoHolePlug = twoHolePlug;
    }
    /**
     * 插入
     */
    @Override
    public void insert() {
        twoHolePlug.charge();
    }
}

這個(gè)適配器實(shí)現(xiàn)了三孔插頭方法,所以他是可以插入三孔插座的,現(xiàn)在這個(gè)適配器傳進(jìn)來(lái)一個(gè)兩孔插頭,就相當(dāng)于兩孔插頭插入了這個(gè)適配器,只要等這個(gè)適配器再插入三孔插座,就可以充上電了,
下面看看咋充的電:

 TwoHolePlug twoHolePlug = new TwoHolePlug();
        //兩孔插頭插入適配器
        ThreeHoleAdapter threeHoleAdapter = new ThreeHoleAdapter(twoHolePlug);
        //適配器插入三孔插座
        ThreeHoleSocket threeHoleSocket = new ThreeHoleSocket(threeHoleAdapter);
        //開(kāi)始充電
        threeHoleSocket.charge();

運(yùn)行后:


QQ截圖20200324211829.png

可以看到,兩孔的插頭成功插入并充上電了。。。

尤記得以前面試被問(wèn)到適配器模式,腦子一熱,心里想著一大堆,嘴上卻在阿巴阿巴阿巴阿巴阿巴


u=4231373203,681615851&fm=111&gp=0.jpg

希望寫過(guò)一遍能長(zhǎng)點(diǎn)記性!??!

?著作權(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)容

  • 1.適配器模式概述 適配器就如同排插一樣,當(dāng)我們電視或者電磁爐是兩孔插頭,而插座是三孔插座時(shí),我們通常會(huì)拿一個(gè)三孔...
    Erichc閱讀 258評(píng)論 0 0
  • 定義 適配器模式把一個(gè)類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無(wú)法在一起工作的兩個(gè)類能夠在...
    步積閱讀 1,749評(píng)論 0 1
  • 適配器模式的官方定義是:適配器模式把一個(gè)類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無(wú)法在一起...
    li_jun閱讀 348評(píng)論 0 0
  • Java設(shè)計(jì)模式之適配器模式 回顧 上一期設(shè)計(jì)模式跟大家分享了創(chuàng)建模式的最后一個(gè)(生成器模式),如果小伙伴們掌握的...
    icyage閱讀 401評(píng)論 0 0
  • 適配器模式,屬于結(jié)構(gòu)性模式,更加關(guān)心的是代碼的結(jié)構(gòu)和復(fù)用,而不是對(duì)象的創(chuàng)建。 適配器模式:別名Wrapper,為了...
    yiqiquhuxi閱讀 702評(píng)論 0 5

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