欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是適配器模式

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-09 11:16 ? 次閱讀

1、什么是適配器模式?

Convert the interface of a class into another interface clients expect.Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.

適配器模式(Adapter Pattern):將一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。

說人話:這個模式就是用來做適配的,它將不兼容的接口轉(zhuǎn)換為可兼容的接口,讓原本由于接口不兼容而不能一起工作的類可以一起工作。比如現(xiàn)實生活中的例子, USB 轉(zhuǎn)接頭就充當(dāng)適配器,把兩種不兼容的接口,通過轉(zhuǎn)接變得可以一起工作。

2、適配器模式定義

圖片

①、Target目標(biāo)角色

該角色定義把其他類轉(zhuǎn)換為何種接口, 也就是我們的期望接口, 例子中的IUserInfo接口就是目標(biāo)角色。

②、Adaptee源角色

你想把誰轉(zhuǎn)換成目標(biāo)角色, 這個“誰”就是源角色, 它是已經(jīng)存在的、 運行良好的類或?qū)ο螅?經(jīng)過適配器角色的包裝, 它會成為一個嶄新、 靚麗的角色。

③、Adapter適配器角色

適配器模式的核心角色, 其他兩個角色都是已經(jīng)存在的角色, 而適配器角色是需要新建立的, 它的職責(zé)非常簡單:把源角色轉(zhuǎn)換為目標(biāo)角色, 怎么轉(zhuǎn)換?通過繼承或是類關(guān)聯(lián)的方式。

3、適配器模式通用代碼實現(xiàn)

/**
 * 目標(biāo)角色
 */
public interface Target {
    void t1();
    void t2();
    void t3();
}
/**
 * 目標(biāo)角色實現(xiàn)類
 */
public class ConcreteTarget implements Target{

    @Override
    public void t1() {
        System.out.println("目標(biāo)角色 t1 方法");
    }

    @Override
    public void t2() {
        System.out.println("目標(biāo)角色 t2 方法");
    }

    @Override
    public void t3() {
        System.out.println("目標(biāo)角色 t3 方法");
    }
}
/**
 * 源角色:要把源角色轉(zhuǎn)換成目標(biāo)角色
 */
public class Adaptee {

    public void a1(){
        System.out.println("源角色 a1 方法");
    }

    public void a2(){
        System.out.println("源角色 a2 方法");
    }

    public void a3(){
        System.out.println("源角色 a3 方法");
    }
}

基于繼承的類適配器

/**
 * 適配器角色
 */
public class Adapter extends Adaptee implements Target{

    @Override
    public void t1() {
        super.a1();
    }

    @Override
    public void t2() {
        super.a2();
    }

    @Override
    public void t3() {
        super.a3();
    }
}

基于組合的對象適配器

public class AdapterCompose implements Target{

    private Adaptee adaptee;

    public AdapterCompose(Adaptee adaptee){
        this.adaptee = adaptee;
    }
    @Override
    public void t1() {
        adaptee.a1();
    }

    @Override
    public void t2() {
        adaptee.a2();
    }

    @Override
    public void t3() {
        adaptee.a3();
    }
}

測試:

public class AdapterClient {

    public static void main(String[] args) {
        // 原有的業(yè)務(wù)邏輯
        Target target = new ConcreteTarget();
        target.t1();

        // 基于繼承 增加適配器業(yè)務(wù)邏輯
        Target target1 = new Adapter();
        target1.t1();

        // 基于組合 增加適配器業(yè)務(wù)邏輯
        Target target2 = new AdapterCompose(new Adaptee());
        target2.t1();
    }
}

打印結(jié)果:

圖片

適配器模式有兩種實現(xiàn)方式:類適配器和對象適配器。其中,類適配器使用繼承關(guān)系來實現(xiàn),對象適配器使用組合關(guān)系來實現(xiàn)。在實際開發(fā)中,選擇的依據(jù)如下:

①、如果 Adaptee 接口并不多,那兩種實現(xiàn)方式都可以。

②、如果 Adaptee 接口很多,而且 Adaptee 和 ITarget 接口定義大部分都相同,那我們推薦使用類適配器,因為 Adaptor 復(fù)用父類 Adaptee 的接口,比起對象適配器的實現(xiàn)方式,Adaptor 的代碼量要少一些。

③、如果 Adaptee 接口很多,而且 Adaptee 和 ITarget 接口定義大部分都不相同,那我們推薦使用對象適配器,因為組合結(jié)構(gòu)相對于繼承更加靈活。

4、適配器模式優(yōu)點

①、適配器模式可以讓兩個沒有任何關(guān)系的類在一起運行, 只要適配器這個角色能夠搞定他們就成。

②、增加了類的透明性

我們訪問的Target目標(biāo)角色, 但是具體的實現(xiàn)都委托給了源角色, 而這些對高層次模塊是透明的, 也是它不需要關(guān)心的。

③、提高了類的復(fù)用度

源角色在原有的系統(tǒng)中還是可以正常使用, 而在目標(biāo)角色中也可以充當(dāng)新的演員。

④、靈活性非常好

適配器可以隨時去掉,而不會影響很多代碼。

5、適配器模式應(yīng)用場景

①、修改已使用的接口

某個已經(jīng)投產(chǎn)中的接口需要修改,這時候使用適配器最好。

②、統(tǒng)一多個類的接口設(shè)計

比如對于敏感詞過濾,需要調(diào)用好幾個第三方接口,每個接口方法名,方法參數(shù)又不一樣,這時候使用適配器模式,將所有第三方的接口適配為統(tǒng)一的接口定義。

③、兼容老版本接口

比如JDK1.0 中包含一個遍歷集合容器的類 Enumeration,JDK2.0 對這個類進(jìn)行了重構(gòu),將它改名為 Iterator 類,并且對它的代碼實現(xiàn)做了優(yōu)化。但是考慮到如果將 Enumeration 直接從 JDK2.0 中刪除,那使用 JDK1.0 的項目如果切換到 JDK2.0,代碼就會編譯不通過。為了避免這種情況的發(fā)生,我們必須把項目中所有使用到 Enumeration 的地方,都修改為使用 Iterator 才行。

單獨一個項目做 Enumeration 到 Iterator 的替換,勉強(qiáng)還能接受。但是,使用 Java 開發(fā)的項目太多了,一次 JDK 的升級,導(dǎo)致所有的項目不做代碼修改就會編譯報錯,這顯然是不合理的。這就是我們經(jīng)常所說的不兼容升級。為了做到兼容使用低版本 JDK 的老代碼,我們可以暫時保留 Enumeration 類,并將其實現(xiàn)替換為直接調(diào)用 Itertor。

public class Collections {
  public static Emueration emumeration(final Collection c) {
    return new Enumeration() {
      Iterator i = c.iterator();
      
      public boolean hasMoreElments() {
        return i.hashNext();
      }
      
      public Object nextElement() {
        return i.next():
      }
    }
  }
}

④、適配不同格式的數(shù)據(jù)

6、代理-橋接-裝飾器-適配器區(qū)別

①、代理模式在不改變原始類接口的條件下,為原始類定義一個代理類,主要目的是控制訪問,而非加強(qiáng)功能,這是它跟裝飾器模式最大的不同。

②、橋接模式:橋接模式的目的是將接口部分和實現(xiàn)部分分離,從而讓它們可以較為容易、也相對獨立地加以改變。

③、裝飾器模式:裝飾者模式在不改變原始類接口的情況下,對原始類功能進(jìn)行增強(qiáng),并且支持多個裝飾器的嵌套使用。

④、適配器模式:適配器模式是一種事后的補(bǔ)救策略。適配器提供跟原始類不同的接口,而代理模式、裝飾器模式提供的都是跟原始類相同的接口。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8706

    瀏覽量

    151971
  • 適配器
    +關(guān)注

    關(guān)注

    8

    文章

    1976

    瀏覽量

    68280
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4830

    瀏覽量

    69091
  • ADAPTOR
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5544
收藏 人收藏

    評論

    相關(guān)推薦

    適配器模式和代理模式的區(qū)別

    對象可以在客戶端和目標(biāo)對象之間起到中介的作用,這樣起到了中介的作用和保護(hù)了目標(biāo)對象的作用。 ?。?)高擴(kuò)展性    適配器模式  在計算機(jī)編程中,適配器模式(有時候也稱包裝樣式或者包裝
    發(fā)表于 10-22 15:17

    適配器模式實現(xiàn)

    目錄第一章 適配器模式介紹第二章 適配器模式實現(xiàn)(類適配器)2.1、關(guān)系依賴圖2.2、創(chuàng)建交流電2.3、定義直流電2.4、創(chuàng)建充電器2.5、
    發(fā)表于 09-15 07:11

    適配器模式的作用

    適配器模式的作用是解決兩個軟件實體間的接口不兼容的問題。使用適配器模式之后,原本由于接口不兼容而不能工作的兩個軟件實體可以一起工作。港式插頭轉(zhuǎn)換器
    發(fā)表于 11-11 06:30

    適配器模式相關(guān)資料推薦

    結(jié)構(gòu)型模式一、適配器模式(一)定義:適配器模式(Adapter Pattern)是作為兩個不兼容的接口之間的橋梁,它結(jié)合了兩個獨立接口的功能
    發(fā)表于 11-11 06:03

    缺省適配器模式基本概念

    在這一節(jié)我們就看一看第一類:缺省適配器模式一、缺省適配器模式基本概念1.1 說明當(dāng)不需要全部實現(xiàn)接口提供的方法時,可以設(shè)計一個適配器抽象類實
    發(fā)表于 11-11 07:53

    對象適配器模式基本概念

    在這一節(jié)我們就看一看第一類:對象適配器模式一、對象適配器模式基本概念1.1 說明對象適配器模式
    發(fā)表于 11-11 07:09

    什么是硬件適配器模式

    硬件適配器模式提供一種方法,使已經(jīng)存在的硬件接口能適應(yīng)應(yīng)用期望。當(dāng)應(yīng)用需要使用一個接口而硬件提供另一種時,硬件適配器模式創(chuàng)建元素在兩個接口之間進(jìn)行轉(zhuǎn)換。
    發(fā)表于 12-21 07:55

    適配器模式的本質(zhì)及分類

    什么是適配器 在計算機(jī)編程中,適配器模式(有時候也稱包裝樣式或者包裝)把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。一個適配
    發(fā)表于 10-18 15:06 ?3184次閱讀

    適配器模式和代理模式的區(qū)別

    適配器模式適配器模式有時候也稱包裝樣式或者包裝。將一個類的接口轉(zhuǎn)接成用戶所期待的。代理模式:為其他對象提供一種代理以控制對這個對象的訪問。
    發(fā)表于 01-12 11:56 ?5295次閱讀
    <b class='flag-5'>適配器</b><b class='flag-5'>模式</b>和代理<b class='flag-5'>模式</b>的區(qū)別

    適配器模式的應(yīng)用

    在計算機(jī)編程中,適配器模式(有時候也稱包裝樣式或者包裝)將一個類的接口適配成用戶所期待的。一個適配允許通常因為接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已
    發(fā)表于 01-12 14:28 ?1024次閱讀
    <b class='flag-5'>適配器</b><b class='flag-5'>模式</b>的應(yīng)用

    JavaScript設(shè)計模式適配器模式

    適配器模式的作用是解決兩個軟件實體間的接口不兼容的問題。使用適配器模式之后,原本由于接口不兼容而不能工作的兩個軟件實體可以一起工作。港式插頭轉(zhuǎn)換器
    發(fā)表于 11-06 16:21 ?5次下載
    JavaScript設(shè)計<b class='flag-5'>模式</b>之<b class='flag-5'>適配器</b><b class='flag-5'>模式</b>

    設(shè)計模式-適配器模式-以電壓適配器為例

    超級鏈接: Java常用設(shè)計模式的實例學(xué)習(xí)系列-緒論參考:《HeadFirst設(shè)計模式》1.關(guān)于適配器模式適配器
    發(fā)表于 11-07 09:36 ?17次下載
    設(shè)計<b class='flag-5'>模式</b>-<b class='flag-5'>適配器</b><b class='flag-5'>模式</b>-以電壓<b class='flag-5'>適配器</b>為例

    適配器模式設(shè)計

    適配器模式一般是在我們要把”現(xiàn)有的對象“應(yīng)用到新的環(huán)境中時使用,通過編寫一個Adapter類,把原有的類應(yīng)用到新的類中,而不必修改原有類,也不必重寫已有類。
    的頭像 發(fā)表于 06-01 14:22 ?739次閱讀
    <b class='flag-5'>適配器</b><b class='flag-5'>模式</b>設(shè)計

    什么是適配器模式?怎樣使用適配器模式進(jìn)行貨幣轉(zhuǎn)換?

    在軟件開發(fā)中,通常使用具有不兼容接口的現(xiàn)有代碼或外部庫。 適配器模式提供了一個優(yōu)雅的解決方案,充當(dāng)不兼容接口之間的橋梁,無需修改現(xiàn)有代碼即可實現(xiàn)無縫集成。
    的頭像 發(fā)表于 07-19 14:35 ?669次閱讀

    設(shè)計模式中什么是適配器模式?

    適配器模式(Adapter),將一個類的接口適配成用戶所期待的。
    的頭像 發(fā)表于 08-02 10:00 ?889次閱讀
    設(shè)計<b class='flag-5'>模式</b>中什么是<b class='flag-5'>適配器</b><b class='flag-5'>模式</b>?