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

舉個(gè)老栗子

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


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

下面通過代碼來展示一下這個(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è)插入方法,就是用來插入三孔插座的。
接下來就是一個(gè)兩孔插頭了:

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

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

兩孔插頭也有一個(gè)充電的方法,但得要插入才能充電,現(xiàn)在三孔插座需要的是一個(gè)三孔類型的插座,但這個(gè)兩孔的是不能夠插進(jìn)去的,這可怎么辦。。。。。。。
這個(gè)時(shí)候就得來個(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)來一個(gè)兩孔插頭,就相當(dāng)于兩孔插頭插入了這個(gè)適配器,只要等這個(gè)適配器再插入三孔插座,就可以充上電了,
下面看看咋充的電:

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

運(yùn)行后:


QQ截圖20200324211829.png

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

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


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

希望寫過一遍能長點(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)容