国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

設計模式(11)適配器模式(講解+應用)

wums / 846人閱讀

摘要:適配器模式將一個類的接口適配成用戶所期待的。概念定義表明,適配器模式就是當前我們的接口是不符合我們使用要求的,我們通過適配器模式將其轉化,即為將一個接口轉化為另一個接口,然后再使用。

目錄

適配器模式

為什么使用適配器模式?

適配器模式應用實例

適配器模式

說道適配器模式,大多數人肯定不會陌生,提及其英文名稱,Adapter,搞過Android的一定會想到在對ListView進行填充的時候,我們所用到的setAdapter(),通過一個適配器來使得listview具有不同的形式,姿態。

適配器模式將一個類的接口適配成用戶所期待的。一個適配允許通常因為接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已存在的類中。

概念定義表明,適配器模式就是當前我們的接口是不符合我們使用要求的,我們通過適配器模式將其轉化,即為將一個接口轉化為另一個接口,然后再使用。就好比,我們在給手機充電的時候,我們直接將usb線插進插座里,肯定是不可以的,我們需要將usb線先插入到一個適配器里,然后適配器插到插座上,我們才可以正常使用。這個概念理解起來還是相對比較簡單的。

為什么使用適配器模式?

適配器是用來將將現有不適配接口轉化為適配的接口,供給當下使用。借助之前的一個機器生產問題來舉例,我們在機器生產后,進行銷售的時候要進行以此包裝,為了降低商店和具體機器的耦合,我們通過一個工廠模式來解決這個問題,實現一個依賴倒置,現在又有一個問題,出現了,我們的商店現在要出售一種在本商店一直沒有出售過的機器,該機器的由于之前一直是在其它的商店銷售,雖然其生產流程類似,但是其銷售前的包裝方式是不同的,現在轉到我們的商店來,我們就有點犯愁了,我們不可能為了這一件產品而重新寫代碼之前的代碼,但是該件商品還是要出售,我們可能想到打開該件商品去修改,但是該商品還在另一家店出售,有沒有不用修改代碼的方式呢?適配器就是來解決這個問題的,適配器可以出來大顯身手了。
之前我們的代碼是這樣的。

public class Store{

    Store(){
        MachineFactory factory = new MachineFactory();
    }

    public void order(String type){
         Machine machine= factory.create(type);
        machine.firstPack();
        machine.secondPack();
        machine.thirdPack();
        machine.fourthPack();
    }
}

我們商店引入的新機器是這樣的

public class InflatableDoll extends Machine{

    public void onePack(){
        System.out.prinltn("Add first pack to protect");
    }

    public void twoPack(){
        System.out.prinltn("Add second pack to protect");
    }

    public void threePack(){
        System.out.prinltn("Add third pack to protect");
    }

    public void fourPack(){
        System.out.prinltn("Add fourth pack to protect");
    }
}

適配器大顯身手

public class InflatableDollAdapter extends Machine{

    InflatableDoll doll;

    MachineAdapter(InflatableDoll doll){
        this.doll = doll;
    }

     public void firstPack(){
         doll.onePack();
    }

    public void secondPack(){
        doll.twoPack();
    }

    public void thirdPack(){
        doll.threePack();
    }

    public void fourthPack(){
        doll.fourPack();
    }
}

商店中的order方法可以這樣來寫

 public void order(String type){
        Machine machine;
        if(type=="InflatableDoll")
            machine = InflatabelDollAdapter(factory.create(type));
        else
            machine=factory.create(type);
        machine.firstPack();
        machine.secondPack();
        machine.thirdPack();
        machine.fourthPack();
    }

不適配的問題解決了,適配器類將原有的類包起來,通過委托來實現功能的適配。這個例子不是很好,因這樣如果后來需要適配的類持續增多,這個將變得很臃腫,這里主要借助這個例子方便大家理解這個適配器的這個實現過程。

適配器應用實例

上面提到Android中的listview,因為不同的Listview所要呈現的視圖也是不同的,為了應對這種變化,就通過一個適配器來將這種變化和我們的ListView實現一個隔離和適配。我們可以通過一個繼承自BaseAdapter類來實現自己的適配器,來將我們對ListView中的每一個item視圖的配置。

下篇更新迭代器模式

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64641.html

相關文章

  • php設計模式

    摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節我們介紹了...

    Dionysus_go 評論0 收藏0
  • php設計模式

    摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節我們介紹了...

    vspiders 評論0 收藏0
  • 前端資源收集整理

    摘要:工作原因,最近一年斷斷續續寫了一點前端代碼,收集整理了一些資料,和大家共享。 工作原因,最近一年斷斷續續寫了一點前端代碼,收集整理了一些資料,和大家共享。 Github版本:Front-End Resource Collection 前端相關資源匯總 學習指導 精華文章 Web前端的路該怎么走?:文章超長,但是干貨超級多,值得反復精讀! 聽說2017你想寫前端?:適合于已經度過了小白階...

    awesome23 評論0 收藏0
  • 前端資源收集整理

    摘要:工作原因,最近一年斷斷續續寫了一點前端代碼,收集整理了一些資料,和大家共享。 工作原因,最近一年斷斷續續寫了一點前端代碼,收集整理了一些資料,和大家共享。 Github版本:Front-End Resource Collection 前端相關資源匯總 學習指導 精華文章 Web前端的路該怎么走?:文章超長,但是干貨超級多,值得反復精讀! 聽說2017你想寫前端?:適合于已經度過了小白階...

    antyiwei 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<