亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

設(shè)計(jì)模式(11)適配器模式(講解+應(yīng)用)

wums / 907人閱讀

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

目錄

適配器模式

為什么使用適配器模式?

適配器模式應(yīng)用實(shí)例

適配器模式

說(shuō)道適配器模式,大多數(shù)人肯定不會(huì)陌生,提及其英文名稱,Adapter,搞過(guò)Android的一定會(huì)想到在對(duì)ListView進(jìn)行填充的時(shí)候,我們所用到的setAdapter(),通過(guò)一個(gè)適配器來(lái)使得listview具有不同的形式,姿態(tài)。

適配器模式將一個(gè)類的接口適配成用戶所期待的。一個(gè)適配允許通常因?yàn)榻涌诓患嫒荻荒茉谝黄鸸ぷ鞯念惞ぷ髟谝黄?,做法是將類自己的接口包裹在一個(gè)已存在的類中。

概念定義表明,適配器模式就是當(dāng)前我們的接口是不符合我們使用要求的,我們通過(guò)適配器模式將其轉(zhuǎn)化,即為將一個(gè)接口轉(zhuǎn)化為另一個(gè)接口,然后再使用。就好比,我們?cè)诮o手機(jī)充電的時(shí)候,我們直接將usb線插進(jìn)插座里,肯定是不可以的,我們需要將usb線先插入到一個(gè)適配器里,然后適配器插到插座上,我們才可以正常使用。這個(gè)概念理解起來(lái)還是相對(duì)比較簡(jiǎn)單的。

為什么使用適配器模式?

適配器是用來(lái)將將現(xiàn)有不適配接口轉(zhuǎn)化為適配的接口,供給當(dāng)下使用。借助之前的一個(gè)機(jī)器生產(chǎn)問(wèn)題來(lái)舉例,我們?cè)跈C(jī)器生產(chǎn)后,進(jìn)行銷售的時(shí)候要進(jìn)行以此包裝,為了降低商店和具體機(jī)器的耦合,我們通過(guò)一個(gè)工廠模式來(lái)解決這個(gè)問(wèn)題,實(shí)現(xiàn)一個(gè)依賴倒置,現(xiàn)在又有一個(gè)問(wèn)題,出現(xiàn)了,我們的商店現(xiàn)在要出售一種在本商店一直沒(méi)有出售過(guò)的機(jī)器,該機(jī)器的由于之前一直是在其它的商店銷售,雖然其生產(chǎn)流程類似,但是其銷售前的包裝方式是不同的,現(xiàn)在轉(zhuǎn)到我們的商店來(lái),我們就有點(diǎn)犯愁了,我們不可能為了這一件產(chǎn)品而重新寫(xiě)代碼之前的代碼,但是該件商品還是要出售,我們可能想到打開(kāi)該件商品去修改,但是該商品還在另一家店出售,有沒(méi)有不用修改代碼的方式呢?適配器就是來(lái)解決這個(gè)問(wèn)題的,適配器可以出來(lái)大顯身手了。
之前我們的代碼是這樣的。

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();
    }
}

我們商店引入的新機(jī)器是這樣的

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方法可以這樣來(lái)寫(xiě)

 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();
    }

不適配的問(wèn)題解決了,適配器類將原有的類包起來(lái),通過(guò)委托來(lái)實(shí)現(xiàn)功能的適配。這個(gè)例子不是很好,因這樣如果后來(lái)需要適配的類持續(xù)增多,這個(gè)將變得很臃腫,這里主要借助這個(gè)例子方便大家理解這個(gè)適配器的這個(gè)實(shí)現(xiàn)過(guò)程。

適配器應(yīng)用實(shí)例

上面提到Android中的listview,因?yàn)椴煌腖istview所要呈現(xiàn)的視圖也是不同的,為了應(yīng)對(duì)這種變化,就通過(guò)一個(gè)適配器來(lái)將這種變化和我們的ListView實(shí)現(xiàn)一個(gè)隔離和適配。我們可以通過(guò)一個(gè)繼承自BaseAdapter類來(lái)實(shí)現(xiàn)自己的適配器,來(lái)將我們對(duì)ListView中的每一個(gè)item視圖的配置。

下篇更新迭代器模式

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/64641.html

相關(guān)文章

  • php設(shè)計(jì)模式

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

    Dionysus_go 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

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

    vspiders 評(píng)論0 收藏0
  • 前端資源收集整理

    摘要:工作原因,最近一年斷斷續(xù)續(xù)寫(xiě)了一點(diǎn)前端代碼,收集整理了一些資料,和大家共享。 工作原因,最近一年斷斷續(xù)續(xù)寫(xiě)了一點(diǎn)前端代碼,收集整理了一些資料,和大家共享。 Github版本:Front-End Resource Collection 前端相關(guān)資源匯總 學(xué)習(xí)指導(dǎo) 精華文章 Web前端的路該怎么走?:文章超長(zhǎng),但是干貨超級(jí)多,值得反復(fù)精讀! 聽(tīng)說(shuō)2017你想寫(xiě)前端?:適合于已經(jīng)度過(guò)了小白階...

    awesome23 評(píng)論0 收藏0
  • 前端資源收集整理

    摘要:工作原因,最近一年斷斷續(xù)續(xù)寫(xiě)了一點(diǎn)前端代碼,收集整理了一些資料,和大家共享。 工作原因,最近一年斷斷續(xù)續(xù)寫(xiě)了一點(diǎn)前端代碼,收集整理了一些資料,和大家共享。 Github版本:Front-End Resource Collection 前端相關(guān)資源匯總 學(xué)習(xí)指導(dǎo) 精華文章 Web前端的路該怎么走?:文章超長(zhǎng),但是干貨超級(jí)多,值得反復(fù)精讀! 聽(tīng)說(shuō)2017你想寫(xiě)前端?:適合于已經(jīng)度過(guò)了小白階...

    antyiwei 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<