最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設(shè)計(jì)模式之適配器模式的實(shí)現(xiàn)

 更新時(shí)間:2023年11月30日 09:58:25   作者:啊幾  
這篇文章主要介紹了Java設(shè)計(jì)模式之適配器模式的實(shí)現(xiàn),適配器模式(Adapter Pattern)是作為兩個(gè)不兼容的接口之間的橋梁,這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個(gè)獨(dú)立接口的功能,需要的朋友可以參考下

前言

適配器模式(Adapter Pattern)是作為兩個(gè)不兼容的接口之間的橋梁。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個(gè)獨(dú)立接口的功能。

這種模式涉及到一個(gè)單一的類,該類負(fù)責(zé)加入獨(dú)立的或不兼容的接口功能。

適配器的實(shí)現(xiàn)方式

適配器可以繼承或依賴已有的對(duì)象,然后實(shí)現(xiàn)想要的目標(biāo)接口。

示例

生活中有一個(gè)實(shí)例就是,筆記本上想要插內(nèi)存卡就必須借助讀卡器,讀卡器就是筆記本usb接口和內(nèi)部卡接口之間的適配器。

將內(nèi)存卡插入讀卡器,再將讀卡器插入筆記本,就能實(shí)現(xiàn)用筆記本讀取內(nèi)存卡了。

繼承實(shí)現(xiàn)

usb接口

public interface UsbInterface {
    public void read();
}

內(nèi)存卡類

public class MemoryCard {
    public void readCard(){
        System.out.println("讀取內(nèi)存卡");
    }
}

電腦類

public class Computer {

    public void readCard(UsbInterface usb){
        usb.read();
    }
}

電腦依賴使用Usb接口,想要使用內(nèi)存卡,就必須要有一個(gè)適配器讀卡器

讀卡器適配器類

public class CardReaderAdapter extends MemoryCard implements UsbInterface{
    @Override
    public void read() {
        readCard();
    }
}

這里使用的是繼承方式,繼承了內(nèi)存卡類

客戶端類

public class Client {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.readCard(new CardReaderAdapter());
    }
}

使用繼承暴露了所有被適配類的方法,增大了耦合性,建議使用有依賴聚合的方式

依賴實(shí)現(xiàn)

依賴實(shí)現(xiàn)的適配器

public class CardReaderAdapter implements UsbInterface {
    
    private MemoryCard card;
    CardReaderAdapter(MemoryCard card){
        this.card = card;
    }
    @Override
    public void read() {
        card.readCard();
    }
}

在Spring源碼中的使用

在Spring源碼中的轉(zhuǎn)化服務(wù)GenericConversionService就使用到了適配器模式

在這里插入圖片描述

在這里插入圖片描述

addConverter(GenericConverter converter)方法需要依賴使用GenericConverter類,但是只有Converter對(duì)象,這時(shí)就需要一個(gè)適配器進(jìn)行適配。

在這里插入圖片描述

在這里插入圖片描述

可以看到ConverterAdapter適配器實(shí)現(xiàn)了GenericConverter接口,并且聚合了Converter對(duì)象。這里就使用到了適配器模式。

到此這篇關(guān)于Java設(shè)計(jì)模式之適配器模式的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java適配器模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用Maven插件生成Mybatis代碼的實(shí)現(xiàn)方法

    用Maven插件生成Mybatis代碼的實(shí)現(xiàn)方法

    本文主要介紹 Maven插件生成Mybatis代碼,現(xiàn)在做開(kāi)發(fā)的朋友有好多用Maven 來(lái)管理代碼,這里給大家舉個(gè)例子,有需要的同學(xué)可以看下
    2016-07-07
  • java中對(duì)象和Map互相轉(zhuǎn)換的幾種常見(jiàn)方式舉例

    java中對(duì)象和Map互相轉(zhuǎn)換的幾種常見(jiàn)方式舉例

    Map在日常開(kāi)發(fā)應(yīng)用中的頻率很高,最常用的實(shí)現(xiàn)類是HashMap和有序的TreeMap,下面這篇文章主要給大家介紹了關(guān)于java中對(duì)象和Map互相轉(zhuǎn)換的幾種常見(jiàn)方式舉例,需要的朋友可以參考下
    2024-01-01
  • 深入剖析Java中Map.Entry的方法與實(shí)戰(zhàn)應(yīng)用

    深入剖析Java中Map.Entry的方法與實(shí)戰(zhàn)應(yīng)用

    在Java集合框架中,Map.Entry扮演著連接鍵值對(duì)的橋梁角色,作為Map接口的內(nèi)部接口,它封裝了鍵值對(duì)的本質(zhì),是高效處理映射數(shù)據(jù)的核心工具,下面我我們就來(lái)深入剖析Map.Entry的概念,方法及實(shí)戰(zhàn)應(yīng)用
    2025-06-06
  • SpringBoot通過(guò)URL地址獲取文件的多種方式

    SpringBoot通過(guò)URL地址獲取文件的多種方式

    本文介紹了多種在SpringBoot中通過(guò)URL地址獲取文件的方法,包括Java原生、RestTemplate、WebClient等,并提供了詳細(xì)的步驟和示例代碼,同時(shí),還討論了異常處理、資源清理、并發(fā)控制等優(yōu)化建議,需要的朋友可以參考下
    2026-01-01
  • Springboot集成CSRF防攻擊過(guò)程

    Springboot集成CSRF防攻擊過(guò)程

    本文介紹了Springboot集成CSRF防攻擊的方法,通過(guò)設(shè)置域名或路徑白名單來(lái)過(guò)濾未知鏈接,從而達(dá)到防護(hù)目的,主要涉及兩個(gè)類:CSRFFilterConfigUtils防護(hù)配置工具類和CsrfFilter防護(hù)過(guò)濾類
    2025-11-11
  • springboot使用Thymeleaf報(bào)錯(cuò)常見(jiàn)的幾種解決方案

    springboot使用Thymeleaf報(bào)錯(cuò)常見(jiàn)的幾種解決方案

    這篇文章主要介紹了springboot使用Thymeleaf報(bào)錯(cuò)常見(jiàn)的幾種解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java并發(fā)編程中的Callable、Future和FutureTask詳解

    Java并發(fā)編程中的Callable、Future和FutureTask詳解

    這篇文章主要介紹了Java并發(fā)編程中的Callable、Future和FutureTask詳解,創(chuàng)建線程的2種方式,一種是直接繼承Thread,另外一種就是實(shí)現(xiàn)Runnable接口,這2種方式都有一個(gè)缺陷就是:在執(zhí)行完任務(wù)之后無(wú)法獲取執(zhí)行結(jié)果,需要的朋友可以參考下
    2023-07-07
  • Java遍歷Map的5種方式實(shí)例

    Java遍歷Map的5種方式實(shí)例

    Map作為Java中的一種集合,以鍵值對(duì)的形式存放一批數(shù)據(jù),經(jīng)常會(huì)被我們應(yīng)用在項(xiàng)目中,下面這篇文章主要給大家介紹了關(guān)于Java遍歷Map的5種方式,需要的朋友可以參考下
    2023-02-02
  • Java實(shí)現(xiàn)一鍵生成PDF文件并插入文字/選項(xiàng)/簽名及公章

    Java實(shí)現(xiàn)一鍵生成PDF文件并插入文字/選項(xiàng)/簽名及公章

    這篇文章將從底層原理到實(shí)戰(zhàn)技巧,為大家詳細(xì)介紹一下如何用Java實(shí)現(xiàn)一鍵生成PDF文件、插入文字、選項(xiàng)、簽名及公章,需要的小伙伴可以了解下
    2025-08-08
  • 一文搞懂Java設(shè)計(jì)模式之責(zé)任鏈模式

    一文搞懂Java設(shè)計(jì)模式之責(zé)任鏈模式

    這篇文章主要給大家介紹了關(guān)于Java設(shè)計(jì)模式之責(zé)任鏈模式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論

长沙市| 哈巴河县| 定州市| 平罗县| 浦江县| 衡山县| 肇州县| 陆河县| 札达县| 香港| 会昌县| 桦南县| 登封市| 琼海市| 阆中市| 珲春市| 和平县| 静宁县| 建平县| 山东省| 合水县| 新民市| 阜南县| 柳林县| 微山县| 青海省| 德保县| 黎川县| 肃北| 古浪县| 东乡| 贵溪市| 沅江市| 泸西县| 水城县| 日照市| 思南县| 盈江县| 方山县| 巩义市| 扎囊县|