經常使用設計模式-適配器模式

一、適配器使用場景:java

 一、系統須要使用現有的類,而此類的接口不符合系統的須要。ide

二、想要創建一個能夠重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在未來引進的類一塊兒工做,這些源類不必定有一致的接口。this

三、經過接口轉換,將一個類插入另外一個類系中。(好比老虎和飛禽,如今多了一個飛虎,在不增長實體的需求下,增長一個適配器,在裏面包容一個虎對象,實現飛的接口。)對象

 

二、生活場景blog

目前只有適配二腳插頭的插座,可是買回來的電器是三腳的插頭。接口

那若是讓三腳插頭能夠插在二腳的插座上呢? 這時候就能夠用適配做爲橋樑,適配器鏈接二腳插頭和三腳的插座。three

 

三、代碼實現class

/**
 * 兩腳插座接口(目標接口)
 */
public interface TwoPinSocket {
    //兩腳
    public void towPinConnect();
}

/**
 * 兩腳插座實現(目標)
 */
public class TwoPinSocketImpl implements TwoPinSocket {
    @Override
    public void towPinConnect() {
        System.out.println("我是兩腳插座");
    }
}


/**
 * 第一種方式:經過繼續獲的被適配者的方法,從而轉成通用方法
 * 適配器目的:兩腳插座適配三腳插頭。插座是目標,插頭是被適配。
 * 適配器須要實現目標接口
 */
public class adapter extends ThreePinPlug implements TwoPinSocket {
    @Override
    public void towPinConnect() {
        super.threePinPlug();
    }
}


/**
 * 第二種方式:注入被適配對象方式實現適配器
 * 適配器目的:兩腳插座適配三腳插頭。插座是目標,插頭是被適配。
 * 適配器須要實現目標接口
 */
public class adapter  implements TwoPinSocket {
    
    private ThreePinPlug threePinPlug;
    
    public void ThreePinPlug(ThreePinPlug threePinPlug){
        this.threePinPlug = threePinPlug;
    }
    
    @Override
    public void towPinConnect() {
        threePinPlug.threePinPlug();
    }
}
相關文章
相關標籤/搜索