Java設(shè)計(jì)模式之適配器模式的示例詳解
1.什么是適配器模式
將一個(gè)類的接口轉(zhuǎn)換成為客戶希望的另外一個(gè)類的接口。適配器(Adapter)模式是的原本由于接口不兼容而不能在一起工作的類,可以一起工作。
比如,小米充電器,可以給小米手機(jī)充電,目前,想讓蘋果充電器給小米手機(jī)充電。如何完成,這時(shí)候需要一個(gè)適配器,將小米充電器和蘋果充電器連在一起。
2.如何實(shí)現(xiàn)
1)目標(biāo)接口,該接口是客戶想要使用的接口(蘋果充電器)
2)被適配者,是一個(gè)已經(jīng)存在的接口或抽象類。(小米充電器)
3)適配器,是一個(gè)類,該類實(shí)現(xiàn)了目標(biāo)接口,并包含被適配者的引用。
適配器的職責(zé)是對(duì)被適配者接口(抽象類)與目標(biāo)接口進(jìn)行適配
3.代碼實(shí)現(xiàn)
1)目標(biāo)接口
/**
* 目標(biāo)接口,蘋果充電器
*/
public interface AppleCharger {
public void appleCharger();
}2)被適配者
/**
*被適配者,小米充電器
*/
public interface MiCharger {
public void miCharger();
}3)小米手機(jī)使用小米充電器進(jìn)行充電
/**
*小米手機(jī),實(shí)現(xiàn)小米充電器接口,可以充電
*/
public class MiPhone implements MiCharger {
@Override
public void miCharger() {
charging();
}
public void charging(){
System.out.println("MiPhone charging.....");
}
}4)適配器。需要調(diào)用蘋果充電器的方法給小米手機(jī)充電。
該類實(shí)現(xiàn)了目標(biāo)接口(AppleChager),并包含被適配者引用(MiCharger)
/**
* 適配器,
* 該類實(shí)現(xiàn)目標(biāo)接口AppleCharge,并包含被適配者(MiCharger)的引用
*/
public class AppleAdapter implements AppleCharger {
MiCharger charge;
public AppleAdapter(MiCharger b){
this.charge = b;
}
/**
* 調(diào)用蘋果充電器的方法
*/
@Override
public void appleCharger() {
//給使用小米充電器的設(shè)備充電
charge.miCharger();
}
}5)測試類
public class TestMain {
public static void main(String args []){
AppleAdapter adapter = new AppleAdapter(new MiPhone());
adapter.appleCharger();//調(diào)用蘋果充電器,給小米手機(jī)充電
}
}到此這篇關(guān)于Java設(shè)計(jì)模式之適配器模式的示例詳解的文章就介紹到這了,更多相關(guān)Java適配器模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于JavaMail實(shí)現(xiàn)簡單郵件發(fā)送
這篇文章主要為大家詳細(xì)介紹了基于JavaMail實(shí)現(xiàn)簡單郵件發(fā)送,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
Java NIO Selector用法詳解【含多人聊天室實(shí)例】
這篇文章主要介紹了Java NIO Selector用法,結(jié)合實(shí)例形式分析了Java NIO Selector基本功能、原理與使用方法,并結(jié)合了多人聊天室實(shí)例加以詳細(xì)說明,需要的朋友可以參考下2019-11-11
解決springmvc使用@PathVariable路徑匹配問題
這篇文章主要介紹了解決springmvc使用@PathVariable路徑匹配問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
淺析Java中靜態(tài)代理和動(dòng)態(tài)代理的應(yīng)用與區(qū)別
代理模式在我們生活中很常見,而Java中常用的兩個(gè)的代理模式就是動(dòng)態(tài)代理與靜態(tài)代理,這篇文章主要為大家介紹了二者的應(yīng)用與區(qū)別,需要的可以參考下2023-08-08
RocketMQ?Broker實(shí)現(xiàn)高可用高并發(fā)的消息中轉(zhuǎn)服務(wù)
RocketMQ消息代理(Broker)是一種高可用、高并發(fā)的消息中轉(zhuǎn)服務(wù),能夠接收并存儲(chǔ)生產(chǎn)者發(fā)送的消息,并將消息發(fā)送給消費(fèi)者。它具有多種消息存儲(chǔ)模式和消息傳遞模式,支持水平擴(kuò)展和故障轉(zhuǎn)移等特性,可以為分布式應(yīng)用提供可靠的消息傳遞服務(wù)2023-04-04
詳解Java中CountDownLatch異步轉(zhuǎn)同步工具類
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章圍繞著CountDownLatch異步轉(zhuǎn)同步工具類展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
SpringBoot基于SpringSecurity表單登錄和權(quán)限驗(yàn)證的示例
這篇文章主要介紹了SpringBoot基于SpringSecurity表單登錄和權(quán)限驗(yàn)證的示例。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09

