適配器分爲兩種,一種是對象適配器,另一種是類適配器,由於對象適配器使用的是組合,而類適配器使用的是繼承的方式來實現兩個類之間的轉換的。所以根據設計模式的代碼設計原則,這裏只說下對象適配器,需要的元素如下:
1.目標(Target):客戶所期待的接口,目標可以使具體的或者抽象的類,也可以是接口。
2.適配器(Adapter):通過包裝一個需要適配的對象,把原接口轉換成目標接口。
3.被適配者(Adaptee).
UML圖如下:
public interface Target {
/**
* 這是源類Adaptee也有的方法
*/
public void sampleOperation1();
/**
* 這是源類Adapteee沒有的方法
*/
public void sampleOperation2();
}
public class Adaptee {
public void sampleOperation1(){}
}
public class Adapter {
private Adaptee adaptee;
public Adapter(Adaptee adaptee){
this.adaptee = adaptee;
}
/**
* 源類Adaptee有方法sampleOperation1
* 因此適配器類直接委派即可
*/
public void sampleOperation1(){
this.adaptee.sampleOperation1();
}
/**
* 源類Adaptee沒有方法sampleOperation2
* 因此由適配器類需要補充此方法
*/
public void sampleOperation2(){
throw unSupportedOperationException();
}
}