設計模式(12)-適配器模式詳解(易懂)

適配器模式的定義

在計算機編程中,適配器模式(有時候也稱包裝樣式或者包裝)將一個類的接口適配成用戶所期待的。一個適配容許一般由於接口不兼容而不能在一塊兒工做的類工做在一塊兒,作法是將類本身的接口包裹在一個已存在的類中。
共有兩類適配器模式:編程

對象適配器模式設計模式

  • 在這種適配器模式中,適配器容納一個它包裹的類的實例。在這種狀況下,適 配器調用被包裹對象的物理實體。

類適配器模式微信

  • -- 這種適配器模式下,適配器繼承自已實現的類。

模型:iphone

  • Target:目標角色,定義把其餘類轉換爲咱們指望的角色
  • Adaptee:初始角色,即咱們原始的類和接口對象,如「A->B」,其中 A就是初始角色,它是一直存在的
  • Adapter:適配器角色,也就是咱們今天的重點,適配器須要新建立,經過繼承等方式把初始角色轉換成爲目標角色。

代碼演示(類適配器模式):ide

1.AbstractTarget:抽象目標角色函數

public interface AbstractTarget {
    //抽象目標角色方法
    public void target();
}

2.具體的目標角色spa

public class Target implements AbstractTarget {
    @Override
    public void target() {
        Log.d("qzs","實現目標方法");
    }
}

3.初始角色Adaptee:設計

public class Adaptee {
    //初始的方法
    public void adaptee(){
        Log.d("qzs","初始的邏輯");
    }
}

4.適配器角色:code

public class Adapter extends Adaptee implements AbstractTarget {
    @Override
    public void target() {
       adaptee();
    }
}

5.調用對象

AbstractTarget tr=new Adapter();      
   tr.target();

實例說明

例如,我手中有Android數據線和iphone手機,我想用安卓數據線給iphone手機充電。此時:

  • 初始角色:Android數據線
  • 目標角色:iphone手機
  • 適配器:數據線轉換器

代碼演示:

1.Android數據線:

public class AndroidLine {
    public  void  charge(){
        Log.d("qzs","Android數據線給Android手機充電");
    }
}

2.目標角色:

public interface AbstractIphone {
    public  void  target();
}

3.數據線轉換器

public class PhoneLineAdapter extends AndroidLine implements  AbstractIphone {
    @Override
    public void target() {
        super.charge();
        Log.d("qzs","可是我能夠經過數據線轉換器來給iphone手機充電");
    }
}

4.調用

AbstractIphone tr1=new PhoneLineAdapter();
        tr1.target();

運行:


適配器模式的優勢及其餘

1.優勢

  • 靈活性好
  • 經過適配器可讓兩個沒有關係的類一塊兒運行
  • 增長了類的通透性

2.注意:

當初始角色的接口和實現類爲多個時,咱們在寫適配器不能用繼承的方式。能夠經過在適配器中構造函數的方法來傳遞對象從而實現數據處理,也就是對象適配器模式。

文章參考了網上信息以及《設計模式之禪》


另外能夠加入個人Android技術交流羣:458739310
你們能夠關注個人微信公衆號:「安卓乾貨鋪」一個有質量、有態度的公衆號!

相關文章
相關標籤/搜索