Java軟件設(shè)計(jì)模式之適配器模式詳解
適配器模式
1、原理
適配器模式是一種結(jié)構(gòu)型設(shè)計(jì)模式。適配器模式的思想是:把一個(gè)類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個(gè)類能夠在一起工作。

2、角色分析
適配器模式涉及3個(gè)角色:
源(Adaptee):需要被適配的對象或類型,相當(dāng)于插頭。適配器(Adapter):連接目標(biāo)和源的中間對象,相當(dāng)于插頭轉(zhuǎn)換器。目標(biāo)(Target):期待得到的目標(biāo),相當(dāng)于插座。

3、優(yōu)缺點(diǎn)

適配器形式
適配器模式包括3種形式:類適配器模式、對象適配器模式、接口適配器模式(或又稱作缺省適配器模式)。
一、類適配器
代碼:
Adaptee
package oopdemo01.Design_pattern.adapter;
// 要被適配的類:網(wǎng)線
public class Adaptee {
public void request() {
System.out.println("連接網(wǎng)線上網(wǎng)");
}
}Adapter(此處繼承Adaptee)
package oopdemo01.Design_pattern.adapter;
// 1.繼承 (類適配器,單繼承)
// 真正的適配器,需要連接usb,連接網(wǎng)線
public class Adapter extends Adaptee implements NetToUsb {
@Override
public void handleRequest() {
super.request(); // 可以上網(wǎng)了
}
}NetToUsb
package oopdemo01.Design_pattern.adapter;
// 接口轉(zhuǎn)換器的抽象實(shí)現(xiàn)
public interface NetToUsb {
// 作用:處理請求,網(wǎng)線=>usb
public void handleRequest();
}Computer
package oopdemo01.Design_pattern.adapter;
// 客戶端類:想上網(wǎng),插不上網(wǎng)線
public class Computer {
// 我們的電腦需要連接上轉(zhuǎn)接器才可以上網(wǎng)
public void net(NetToUsb adapter) {
// 上網(wǎng)的具體實(shí)現(xiàn),找一個(gè)轉(zhuǎn)接頭
adapter.handleRequest();
}
public static void main(String[] args) {
// 電腦 適配器 網(wǎng)線
Computer computer = new Computer(); // 電腦
Adaptee adaptee = new Adaptee(); // 網(wǎng)線
Adapter adapter = new Adapter(); // 轉(zhuǎn)接器
computer.net(adapter);
}
}控制臺(tái)輸出結(jié)果:

二、對象適配器
Adapter2(此處的Adaptee是一個(gè)屬性)
package oopdemo01.Design_pattern.adapter;
// 2.組合 (對象適配器:更常用)
// 真正的適配器,需要連接usb,連接網(wǎng)線
public class Adapter2 implements NetToUsb {
private Adaptee adaptee;
public Adapter2(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void handleRequest() {
adaptee.request(); // 可以上網(wǎng)了
}
}Computer
package oopdemo01.Design_pattern.adapter;
// 客戶端類:想上網(wǎng),插不上網(wǎng)線
public class Computer {
// 我們的電腦需要連接上轉(zhuǎn)接器才可以上網(wǎng)
public void net(NetToUsb adapter) {
// 上網(wǎng)的具體實(shí)現(xiàn),找一個(gè)轉(zhuǎn)接頭
adapter.handleRequest();
}
public static void main(String[] args) {
// 電腦 適配器 網(wǎng)線
Computer computer = new Computer(); // 電腦
Adaptee adaptee = new Adaptee(); // 網(wǎng)線
Adapter2 adapter2 = new Adapter2(adaptee); // 轉(zhuǎn)接器
computer.net(adapter2);
}
}控制臺(tái)輸出結(jié)果:

到此這篇關(guān)于Java軟件設(shè)計(jì)模式之適配器模式詳解的文章就介紹到這了,更多相關(guān)Java適配器模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot集成Deepseek4j的項(xiàng)目實(shí)踐
本文主要介紹了springboot集成Deepseek4j的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
java商城項(xiàng)目實(shí)戰(zhàn)之購物車功能實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了java商城項(xiàng)目實(shí)戰(zhàn)之購物車功能實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Springboot各版本與Java JDK的對應(yīng)版本梳理
本文介紹了SpringBoot各版本支持的JavaJDK版本,SpringBoot2.5.x支持JDK8、11、17,2.4.x支持JDK8、11、15等,商用JDK如OracleJDK、IBMJDK、AzulZuluEnterprise等包含額外功能,適用于企業(yè)級(jí)應(yīng)用2026-04-04
Apache?Maven3.6.0的下載安裝和環(huán)境配置(圖文教程)
本文主要介紹了Apache?Maven3.6.0的下載安裝和環(huán)境配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
RabbitMQ消費(fèi)者限流實(shí)現(xiàn)消息處理優(yōu)化
這篇文章主要介紹了RabbitMQ消費(fèi)者限流實(shí)現(xiàn)消息處理優(yōu)化,消費(fèi)者限流是用于消費(fèi)者每次獲取消息時(shí)限制條數(shù),注意前提是手動(dòng)確認(rèn)模式,并且在手動(dòng)確認(rèn)后才能獲取到消息,感興趣想要詳細(xì)了解可以參考下文2023-05-05
Spring中一個(gè)少見的引介增強(qiáng)IntroductionAdvisor
這篇文章主要為大家介紹了Spring中一個(gè)少見的引介增強(qiáng)IntroductionAdvisor實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
java導(dǎo)出Excel(非模板)可導(dǎo)出多個(gè)sheet方式
Java開發(fā)中,導(dǎo)出Excel是常見需求,有時(shí)需要支持多個(gè)Sheet導(dǎo)出,此技巧介紹非模板方式實(shí)現(xiàn)單標(biāo)題單Sheet以及多Sheet導(dǎo)出,標(biāo)題一致或不一致均可,可換成Map使用,適合個(gè)人開發(fā)者和需要Excel導(dǎo)出功能的場景2024-09-09
springboot?log4j2日志框架整合與使用過程解析
這篇文章主要介紹了springboot?log4j2日志框架整合與使用,包括引入maven依賴和添加配置文件log4j2-spring.xml的相關(guān)知識(shí),需要的朋友可以參考下2022-05-05

