国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

適配器模式介紹

這篇具有很好參考價值的文章主要介紹了適配器模式介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

適配器模式介紹,設(shè)計模式,Java技術(shù),適配器模式,java,設(shè)計模式

目錄

一、適配器模式介紹

1.1 適配器模式定義

1.2 適配器模式原理

1.2.1 適配器模式類圖

1.2.2 模式角色說明

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

2.1 類適配器模式

2.1.1 需求說明

2.1.2 需求實現(xiàn)

2.1.2.1 類圖

2.1.2.2 具體實現(xiàn)

2.1.2.2.1 SDCard接口

2.1.2.2.2 SDCardImpl實現(xiàn)類

2.1.2.2.3 TFCard接口

2.1.2.2.4 TFCardImpl 實現(xiàn)類

2.1.2.2.5 SDAdapterTF適配類

2.1.2.2.6 Computer接口調(diào)用類

2.1.2.2.7 測試類

2.2 對象適配器模式

2.2.1 需求說明

2.2.2 需求實現(xiàn)

2.2.2.1 類圖

2.2.2.2 具體實現(xiàn)

2.2.2.2.1 適配器實現(xiàn)類

2.2.2.2.2 測試類

三、適配器模式總結(jié)

3.1 適配器模式的優(yōu)點

3.2 適配器模式的缺點

3.3 適配器模式適用的場景

3.4 代理、橋接、裝飾器、適配器 4 種設(shè)計模式的區(qū)別


一、適配器模式介紹

1.1 適配器模式定義

適配器模式(adapter pattern )的原始定義是:將類的接口轉(zhuǎn)換為客戶期望的另一個接口,適配器可以讓不兼容的兩個類一起協(xié)同工作。

如果去歐洲國家去旅游的話,他們的插座如下圖最左邊,是歐洲標(biāo)準(zhǔn)。而我們使用的插頭如下圖最右邊的。因此我們的筆記本電腦,手機(jī)在當(dāng)?shù)夭荒苤苯映潆?。所以就需要一個插座轉(zhuǎn)換器,轉(zhuǎn)換器第1面插入當(dāng)?shù)氐牟遄?br> 第2面供我們充電,這樣使得我們的插頭在當(dāng)?shù)啬苁褂谩I钪羞@樣的例子很多,手機(jī)充電器(將220v轉(zhuǎn)換為5v的電壓),讀卡器等,其實就是使用到了適配器模式。

適配器模式介紹,設(shè)計模式,Java技術(shù),適配器模式,java,設(shè)計模式

適配器模式是用來做適配,它將不兼容的接口轉(zhuǎn)換為可兼容的接口,讓原本由于接口不兼容而不能一起工作的類可以一起工作。適配器模式有兩種實現(xiàn)方式:類適配器和對象適配器。其中,類適配器使用繼承關(guān)系來實現(xiàn),對象適配器使用組合關(guān)系來實現(xiàn)。類適配器模式的耦合度比后者高,且要求程序員了解現(xiàn)有組件庫中的相關(guān)組件的內(nèi)部結(jié)構(gòu),所以應(yīng)用相對較少些。

1.2 適配器模式原理

1.2.1 適配器模式類圖

適配器模式介紹,設(shè)計模式,Java技術(shù),適配器模式,java,設(shè)計模式

1.2.2 模式角色說明

適配器模式(Adapter)包含以下主要角色:

  • 目標(biāo)(Target)接口:當(dāng)前系統(tǒng)業(yè)務(wù)所期待的接口,它可以是抽象類或接口。
  • 適配者(Adaptee)類:適配者即被適配的角色,它是被訪問和適配的現(xiàn)存組件庫中的組件接口。
  • 適配器(Adapter)類:它是一個轉(zhuǎn)換器,通過繼承或引用適配者的對象,把適配者接口轉(zhuǎn)換成目標(biāo)接口,讓客戶按目標(biāo)接口的格式訪問適配者。

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

2.1 類適配器模式

2.1.1 需求說明

假設(shè)現(xiàn)有一臺電腦目前只能讀取SD卡的信息,這時我們想要使用電腦讀取TF卡的內(nèi)容, 就需要將TF卡加上卡套,轉(zhuǎn)換成SD卡!

2.1.2 需求實現(xiàn)

2.1.2.1 類圖

適配器模式介紹,設(shè)計模式,Java技術(shù),適配器模式,java,設(shè)計模式

2.1.2.2 具體實現(xiàn)
2.1.2.2.1 SDCard接口
package main.java.cn.test.adapter.V1;

/**
 * @author ningzhaosheng
 * @date 2024/1/14 12:07:50
 * @description SD卡接口
 */
public interface SDCard {
    //讀取SD卡方法
    String readSD();

    //寫入SD卡功能
    void writeSD(String msg);
}

2.1.2.2.2 SDCardImpl實現(xiàn)類
package main.java.cn.test.adapter.V1;

/**
 * @author ningzhaosheng
 * @date 2024/1/14 12:08:21
 * @description SD卡實現(xiàn)類
 */
public class SDCardImpl implements SDCard {
    @Override
    public String readSD() {
        String msg = "sd card reading data";
        return msg;
    }

    @Override
    public void writeSD(String msg) {
        System.out.println("sd card write data : " + msg);
    }
}
2.1.2.2.3 TFCard接口
package main.java.cn.test.adapter.V1;

/**
 * @author ningzhaosheng
 * @date 2024/1/14 12:09:15
 * @description TF卡接口
 */
public interface TFCard {
    //讀取TF卡方法
    String readTF();

    //寫入TF卡功能
    void writeTF(String msg);
}
2.1.2.2.4 TFCardImpl 實現(xiàn)類
package main.java.cn.test.adapter.V1;

/**
 * @author ningzhaosheng
 * @date 2024/1/14 12:09:47
 * @description TF卡實現(xiàn)類
 */
public class TFCardImpl implements TFCard {
    @Override
    public String readTF() {
        String msg = "tf card reading data";
        return msg;

    }

    @Override
    public void writeTF(String msg) {
        System.out.println("tf card write data : " + msg);

    }
}

2.1.2.2.5 SDAdapterTF適配類
package main.java.cn.test.adapter.V1;

/**
 * @author ningzhaosheng
 * @date 2024/1/14 12:10:29
 * @description 定義適配器類(SD兼容TF)
 */
public class SDAdapterTF extends TFCardImpl implements SDCard {
    @Override
    public String readSD() {
        System.out.println("adapter read tf card ");
        return readTF();
    }

    @Override
    public void writeSD(String msg) {
        System.out.println("adapter write tf card");
        writeTF(msg);
    }
}

2.1.2.2.6 Computer接口調(diào)用類
package main.java.cn.test.adapter.V1;

/**
 * @author ningzhaosheng
 * @date 2024/1/14 12:13:15
 * @description
 */
public class Computer{
    public String read(SDCard sdCard) {
        return sdCard.readSD();
    };
}

2.1.2.2.7 測試類
package main.java.cn.test.adapter.V1;

/**
 * @author ningzhaosheng
 * @date 2024/1/14 12:11:39
 * @description 測試類
 */
public class Test {
    public static void main(String[] args) {
        Computer computer = new Computer();
        SDCard sdCard = new SDCardImpl();
        System.out.println(computer.read(sdCard));
        System.out.println("========================");
        SDAdapterTF adapterTF = new SDAdapterTF();
        System.out.println(computer.read(adapterTF));
    }
}

適配器模式介紹,設(shè)計模式,Java技術(shù),適配器模式,java,設(shè)計模式

2.2 對象適配器模式

2.2.1 需求說明

假設(shè)現(xiàn)有一臺電腦目前只能讀取SD卡的信息,這時我們想要使用電腦讀取TF卡的內(nèi)容, 就需要將TF卡加上卡套,轉(zhuǎn)換成SD卡! 適用對象適配器模式實現(xiàn)。

2.2.2 需求實現(xiàn)

2.2.2.1 類圖

適配器模式介紹,設(shè)計模式,Java技術(shù),適配器模式,java,設(shè)計模式

2.2.2.2 具體實現(xiàn)
2.2.2.2.1 適配器實現(xiàn)類
package main.java.cn.test.adapter.V2;

import main.java.cn.test.adapter.V1.SDCard;
import main.java.cn.test.adapter.V1.TFCard;

/**
 * @author ningzhaosheng
 * @date 2024/1/14 12:31:54
 * @description 定義適配器類(SD兼容TF)
 */
public class SDAdapterTF implements SDCard {
    private TFCard tfCard;

    public SDAdapterTF(TFCard tfCard) {
        this.tfCard = tfCard;
    }

    @Override
    public String readSD() {
        System.out.println("adapter read tf card ");
        return tfCard.readTF();
    }

    @Override
    public void writeSD(String msg) {
        System.out.println("adapter write tf card");
        tfCard.writeTF(msg);

    }
}

2.2.2.2.2 測試類
package main.java.cn.test.adapter.V2;

import main.java.cn.test.adapter.V1.*;

/**
 * @author ningzhaosheng
 * @date 2024/1/14 12:33:18
 * @description
 */
public class Test2 {
    public static void main(String[] args) {
        Computer computer = new Computer();
        SDCard sdCard = new SDCardImpl();
        System.out.println(computer.read(sdCard));
        System.out.println("========================");
        TFCard tfCard = new TFCardImpl();
        SDAdapterTF adapterTF = new SDAdapterTF(tfCard);
        System.out.println(computer.read(adapterTF));
    }
}

適配器模式介紹,設(shè)計模式,Java技術(shù),適配器模式,java,設(shè)計模式

三、適配器模式總結(jié)

3.1 適配器模式的優(yōu)點

1. 將目標(biāo)類和適配者類解耦,通過引入一個適配器類來重用現(xiàn)有的適配者類,無序修改原有結(jié)構(gòu)
2. 增加了類的透明性和復(fù)用性,將具體業(yè)務(wù)實現(xiàn)過程封裝在適配者類中,對于客戶端類而言是透明的,而且提高了適配者的復(fù)用性,同一個適配者類可以在多個不同的系統(tǒng)中復(fù)用。
3. 靈活性和擴(kuò)展性都非常好,通過使用配置文件可以很方便的更換適配器,也可以在不修改原有代碼的基礎(chǔ)上增加新的適配器類,符合開閉原則。

3.2 適配器模式的缺點

  • 類適配器的缺點
  1. 對于Java等不支持多重繼承的語言,一次最多只能適配一個適配者類,不能同時適配多個適配者
  2. 適配者類不能為最終類
  • 對象適配器的缺點
  1. 與類適配器模式相比較,在該模式下要在適配器中置換適配者類的某些方法比較麻煩。

3.3 適配器模式適用的場景

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

某個功能的實現(xiàn)依賴多個外部系統(tǒng)(或者說類)。通過適配器模式,將它們的接口適配為統(tǒng)一的接口定義

  • 需要依賴外部系統(tǒng)時

當(dāng)我們把項目中依賴的一個外部系統(tǒng)替換為另一個外部系統(tǒng)的時候,利用適配器模式,可以減少對代碼的改動

  • 原有接口無法修改時或者原有接口功能太老舊但又需要兼容;

JDK1.0 Enumeration 到 Iterator 的替換,適用適配器模式保留Enumeration 類,并將其實現(xiàn)替換為直接調(diào)用 Itertor。

  • 適配不同數(shù)據(jù)格式時;

Slf4j 日志框架,定義打印日志的統(tǒng)一接口,提供針對不同日志框架的適配器

3.4 代理、橋接、裝飾器、適配器 4 種設(shè)計模式的區(qū)別

代理、橋接、裝飾器、適配器,這 4 種模式是比較常用的結(jié)構(gòu)型設(shè)計模式。它們的代碼結(jié)構(gòu)非常相似。但其各自的用意卻不同,簡單說一下它們之間的關(guān)系。

  • 代理模式:

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

  • 橋接模式:

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

  • 裝飾器模式:

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

  • 適配器模式:

將一個類的接口轉(zhuǎn)換為客戶希望的另一個接口.適配器模式讓那些不兼容的類可以一起工作。

好了,本次分享就到這里,歡迎大家繼續(xù)閱讀《設(shè)計模式》專欄其他設(shè)計模式內(nèi)容,如果有幫助到大家,歡迎大家點贊+關(guān)注+收藏,有疑問也歡迎大家評論留言!文章來源地址http://www.zghlxwxcb.cn/news/detail-796957.html

到了這里,關(guān)于適配器模式介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 重讀Java設(shè)計模式: 適配器模式解析

    重讀Java設(shè)計模式: 適配器模式解析

    在軟件開發(fā)中,經(jīng)常會遇到不同接口之間的兼容性問題。當(dāng)需要使用一個已有的類,但其接口與我們所需的不兼容時,我們可以通過適配器模式來解決這一問題。適配器模式是一種結(jié)構(gòu)型設(shè)計模式,它允許接口不兼容的類之間進(jìn)行合作。本文將深入探討適配器模式的概念、應(yīng)

    2024年04月09日
    瀏覽(21)
  • Java與設(shè)計模式(7):適配器模式

    適配器模式是一種結(jié)構(gòu)型設(shè)計模式,它允許將一個類的接口轉(zhuǎn)換為客戶端所期望的另一個接口。適配器模式使得原本由于接口不兼容而無法一起工作的類能夠協(xié)同工作。 適配器模式通過引入一個適配器類來解決接口不兼容的問題。適配器類實現(xiàn)了客戶端所期望的目標(biāo)接口,并

    2024年02月11日
    瀏覽(21)
  • Java設(shè)計模式之適配器模式詳解

    大家好,我是免費搭建查券返利機(jī)器人賺傭金就用微賺淘客系統(tǒng)3.0的小編,也是冬天不穿秋褲,天冷也要風(fēng)度的程序猿!在今天的篇章中,我們將深入探討Java設(shè)計模式的奇妙世界,而焦點就是適配器模式。這種模式就像是代碼變換的藝術(shù)大師,讓不同的接口和類在項目中和諧

    2024年01月19日
    瀏覽(28)
  • Java設(shè)計模式-結(jié)構(gòu)型-適配器模式

    Java設(shè)計模式-結(jié)構(gòu)型-適配器模式

    ? 與電源適配器相似,在適配器模式中引入了一個被稱為適配器(Adapter)的包裝類,而它所包裝的對象稱為適配者(Adaptee),即被適配的類。適配器的實現(xiàn)就是把客戶類的請求轉(zhuǎn)化為對適配者的相應(yīng)接口的調(diào)用。也就是說:當(dāng)客戶類調(diào)用適配器的方法時,在適配器類的內(nèi)部將調(diào)用

    2024年02月20日
    瀏覽(30)
  • 【Java 設(shè)計模式】結(jié)構(gòu)型之適配器模式

    【Java 設(shè)計模式】結(jié)構(gòu)型之適配器模式

    適配器模式(Adapter Pattern)是一種結(jié)構(gòu)型設(shè)計模式, 用于將一個類的接口轉(zhuǎn)換成客戶端期望的另一個接口 。這種模式使得原本由于接口不兼容而不能一起工作的類可以一起工作。在本文中,我們將介紹 Java 中適配器模式的定義、結(jié)構(gòu)、使用場景以及如何在實際開發(fā)中應(yīng)用。

    2024年01月19日
    瀏覽(24)
  • 設(shè)計模式--適配器模式

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

    目錄 基本介紹 工作原理 類適配模式 介紹 應(yīng)用實例介紹 類適配器模式注意事項和細(xì)節(jié) 對象適配模式 介紹 對象適配器模式注意事項和細(xì)節(jié) 接口適配器模式 介紹 適配器模式的注意事項和細(xì)節(jié) ?(1) 適配器模式(Adapter Pattern) 將某個類的接口轉(zhuǎn)換成客戶端期望的另一個接口表示

    2023年04月26日
    瀏覽(19)
  • 設(shè)計模式——適配器模式

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

    說起適配器其實在我們的生活中是非常常見的,比如:學(xué)校的宿舍的電壓都比較低,而有的學(xué)生想使用大功率電器,宿舍的就會跳閘,然而如果你使用一個適配器(變壓器)就可以使用了(溫馨提示宿舍使用大功率電器不太安全,容易引起火災(zāi),希望大家謹(jǐn)慎使用)。 又比如

    2024年02月12日
    瀏覽(35)
  • 設(shè)計模式-適配器模式

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

    在我們生活中,插座輸出的電源都是220V的,而我們手機(jī)充電需要的電壓基本都是5V的。我們不能直接用220V的電壓來給手機(jī)充電,也不能說專門有線路來提供5V的電壓。所以就有了充電器,充電器可以將220V的電壓轉(zhuǎn)為5V的電壓,這樣我們就方便太多了。 上面所說的充電器其實就

    2024年02月08日
    瀏覽(34)
  • 【設(shè)計模式】適配器模式

    【設(shè)計模式】適配器模式

    適配器模式(Adapter Pattern)是作為兩個不兼容的接口之間的橋梁。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個獨立接口的功能。 這種模式涉及到一個單一的類,該類負(fù)責(zé)加入獨立的或不兼容的接口功能。舉個真實的例子,讀卡器是作為內(nèi)存卡和筆記本之間的適配器。

    2024年02月12日
    瀏覽(32)
  • 【Java面試題】設(shè)計模式之七種結(jié)構(gòu)性模式——代理模式、適配器模式、橋接模式、裝飾模式、外觀模式、享元模式、組合模式

    目錄 一、代理模式 二、適配器模式 三、橋接模式 四、裝飾模式 五、外觀模式 六、享元模式 七、組合模式 概念: 代理模式是為其他對象提供一種以代理控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標(biāo)對

    2023年04月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包