一、適配器使用場景: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(); } }