java 設計模式:adapter

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章