對接接口的時候,常常會遇到,接口的功能差很少,可是接口不匹配,這個時候能夠使用適配器模式。java
適配器模式一般有這幾個角色:
ide
Target:目標接口ui
Source:源接口,源接口可能有多個。this
Adapter:適配器,將源接口處理傳換成Target接口。
設計
有兩種適配器模式的實現,一種是經過繼承Source,另外一種就是和Source使用組合的方式。code
1.繼承Source的方式:繼承
Target有一個getFirstName的方法,Source有一個getName方法,Source須要進行轉換才能對接Target的接口。接口
Target:get
public interface Target { String getFirstName(); }
Source:it
public class Source { public String getName(){ return "Hui Li"; } }
Adapter
public class Adapter extends Source implements Target { @Override public String getFirstName() { return super.getName().split(" ")[0]; } }
2.對多個Source進行組合方式實現Adapter
Target有一個getName方法,,SourceA有一個getFirstName方法,SourceB有一個getLastName方法。
Target:
public interface Target { String getFirstName(); }
SourceA:
public class SourceA { public String getFirstName(){ return "Hui"; } }
SourceB
public class SourceB { public String getLastName(){ return "Li"; } }
Adapter:
public class Adapter implements Target { private SourceA sourceA; private SourceB sourceB; public Adapter(SourceA sourceA, SourceB sourceB) { this.sourceA = sourceA; this.sourceB = sourceB; } @Override public String getFirstName() { return this.sourceB.getLastName() + " " + this.sourceB.getLastName(); } }
適配器模式看起來確實挺簡單的。通常狀況下,在設計初期是不會考慮適配器模式的,基本上是遇到接口已經成熟,方便修改的時候須要對接接口,這時候適配器模式是你很是合適的選擇之一。