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); } }
控制臺輸出結(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); } }
控制臺輸出結(jié)果:
到此這篇關(guān)于Java軟件設(shè)計(jì)模式之適配器模式詳解的文章就介紹到這了,更多相關(guān)Java適配器模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot線程池監(jiān)控的簡單實(shí)現(xiàn)
本文主要介紹了springboot線程池監(jiān)控的簡單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01詳解Java從后臺重定向(redirect)到另一個(gè)項(xiàng)目的方法
這篇文章主要介紹了詳解Java從后臺重定向(redirect)到另一個(gè)項(xiàng)目的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04Mybatis中mapper.xml實(shí)現(xiàn)熱加載介紹
大家好,本篇文章主要講的是Mybatis中mapper.xml實(shí)現(xiàn)熱加載介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01Java實(shí)現(xiàn)API sign簽名校驗(yàn)的方法詳解
為了防止中間人攻擊,有時(shí)我們需要進(jìn)行API sign 簽名校驗(yàn)。本文將用Java語言實(shí)現(xiàn)API sign 簽名校驗(yàn),感興趣的小伙伴可以嘗試一下2022-07-07SpringBoot中選擇性加載Bean的幾種方式小結(jié)
自動(dòng)配置是springboot技術(shù)非常好用的核心因素,前面學(xué)習(xí)了這么多種技術(shù)的整合,每一個(gè)都離不開自動(dòng)配置,不過在學(xué)習(xí)自動(dòng)配置的時(shí)候,需要你對spring容器如何進(jìn)行bean管理的過程非常熟悉才行,本文給大家介紹了SpringBoot中選擇性加載Bean的幾種方式,需要的朋友可以參考下2025-01-01關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯
Log4j?是Apache為Java提供的日志管理工具。他與System.out.println()的作用相似,用來跟蹤、調(diào)試、維護(hù)程序。這篇文章主要介紹了關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯,需要的朋友可以參考下2021-12-12