Java設(shè)計模式之適配器模式的實現(xiàn)
前言
適配器模式(Adapter Pattern)是作為兩個不兼容的接口之間的橋梁。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個獨立接口的功能。
這種模式涉及到一個單一的類,該類負責(zé)加入獨立的或不兼容的接口功能。
適配器的實現(xiàn)方式
適配器可以繼承或依賴已有的對象,然后實現(xiàn)想要的目標接口。
示例
生活中有一個實例就是,筆記本上想要插內(nèi)存卡就必須借助讀卡器,讀卡器就是筆記本usb接口和內(nèi)部卡接口之間的適配器。
將內(nèi)存卡插入讀卡器,再將讀卡器插入筆記本,就能實現(xiàn)用筆記本讀取內(nèi)存卡了。
繼承實現(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)存卡,就必須要有一個適配器讀卡器
讀卡器適配器類
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());
}
}
使用繼承暴露了所有被適配類的方法,增大了耦合性,建議使用有依賴聚合的方式
依賴實現(xiàn)
依賴實現(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對象,這時就需要一個適配器進行適配。


可以看到ConverterAdapter適配器實現(xiàn)了GenericConverter接口,并且聚合了Converter對象。這里就使用到了適配器模式。
到此這篇關(guān)于Java設(shè)計模式之適配器模式的實現(xiàn)的文章就介紹到這了,更多相關(guān)Java適配器模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Maven插件生成Mybatis代碼的實現(xiàn)方法
本文主要介紹 Maven插件生成Mybatis代碼,現(xiàn)在做開發(fā)的朋友有好多用Maven 來管理代碼,這里給大家舉個例子,有需要的同學(xué)可以看下2016-07-07
java中對象和Map互相轉(zhuǎn)換的幾種常見方式舉例
Map在日常開發(fā)應(yīng)用中的頻率很高,最常用的實現(xiàn)類是HashMap和有序的TreeMap,下面這篇文章主要給大家介紹了關(guān)于java中對象和Map互相轉(zhuǎn)換的幾種常見方式舉例,需要的朋友可以參考下2024-01-01
深入剖析Java中Map.Entry的方法與實戰(zhàn)應(yīng)用
在Java集合框架中,Map.Entry扮演著連接鍵值對的橋梁角色,作為Map接口的內(nèi)部接口,它封裝了鍵值對的本質(zhì),是高效處理映射數(shù)據(jù)的核心工具,下面我我們就來深入剖析Map.Entry的概念,方法及實戰(zhàn)應(yīng)用2025-06-06
springboot使用Thymeleaf報錯常見的幾種解決方案
這篇文章主要介紹了springboot使用Thymeleaf報錯常見的幾種解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
Java并發(fā)編程中的Callable、Future和FutureTask詳解
這篇文章主要介紹了Java并發(fā)編程中的Callable、Future和FutureTask詳解,創(chuàng)建線程的2種方式,一種是直接繼承Thread,另外一種就是實現(xiàn)Runnable接口,這2種方式都有一個缺陷就是:在執(zhí)行完任務(wù)之后無法獲取執(zhí)行結(jié)果,需要的朋友可以參考下2023-07-07
Java實現(xiàn)一鍵生成PDF文件并插入文字/選項/簽名及公章
這篇文章將從底層原理到實戰(zhàn)技巧,為大家詳細介紹一下如何用Java實現(xiàn)一鍵生成PDF文件、插入文字、選項、簽名及公章,需要的小伙伴可以了解下2025-08-08

