adapter定義:
將一個接口轉換成客戶希望的另一個接口,適配器模式使接口不兼容的那些類可以一起工作,其別名爲包裝器(Wrapper)。
類適配器
定義:
是把適配的類的api轉化成爲目標類的api。
adapter是爲了讓adaptee與Target發生關係建立的
adapter 實現Target接口,來繼承Adaptee,實現需要實現的方法
代碼:
//適配接口
public interface Target {
void request();
}
//需要適配的對象
public class Adaptee {
public void SpecialRequest(){
System.out.println("SpecialRequest");
}
}
//適配器
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
specialRequest();
}
}
//運行代碼
Target target = new Adapter();
target.request();
- 類適配器是繼承的方式,方法通過靜態定義的
- 對於類適配器,可以重新定義Adaptee的部分行爲。
- 對於類適配器,僅僅引入一個對象,並不需要額外的引用來間接得到Adaptee。
- 對於類適配器,由於適配器直接繼承adaptee,使得適配器不能和adaptee的子類一起工作。
對象適配器模式
定義:與類的適配器模式一樣,對象的適配器模式把被適配的類的api轉化爲目標類的api,與類的適配器模式不同的是,對象的適配器模式不是使用繼承關係連接到Adaptee類,而是通過委派關係連接到adaptee類。
//適配接口
public interface Target {
void request();
}
//需要適配的對象
public class Adaptee {
public void SpecialRequest(){
System.out.println("SpecialRequest");
}
}
//適配器
public class Adapter implements Target {
Adaptee adaptee;
public Adapter(Adaptee adaptee){
this.adaptee = adaptee;
}
@Override
public void request() {
adaptee.specialRequest();
}
}
//運行代碼
Target target = new Adapter(new Adaptee());
target.request();
如上兩個對比,就能看出類適配器和對象適配器的區別。
對象適配器:持有一個對象來實現適配器模式
類適配器:通過繼承來實現適配器模式。
- 對象適配器使用對象組合的方式,是動態組合的方式
- 對象適配器,一個適配器可以把多種不同的源適配器適配到同一個目標
- 對於對象適配器,要重定義adapee的行爲比較困難
- 對象適配器需要額外的引用來間接得到adapter
adaper在Android中的運用
listview