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

Java軟件設(shè)計(jì)模式之適配器模式詳解

 更新時(shí)間:2023年07月20日 09:34:35   作者:王雀躍  
這篇文章主要介紹了Java軟件設(shè)計(jì)模式之適配器模式詳解,適配器模式可分為對(duì)象適配器和類適配器兩種,在對(duì)象適配器模式中,適配器與適配者之間是關(guān)聯(lián)關(guān)系;在類適配器模式中,適配器與適配者之間是繼承(或?qū)崿F(xiàn))關(guān)系,需要的朋友可以參考下

適配器模式

1、原理

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

2、角色分析

適配器模式涉及3個(gè)角色:

源(Adaptee):需要被適配的對(duì)象或類型,相當(dāng)于插頭。適配器(Adapter):連接目標(biāo)和源的中間對(duì)象,相當(dāng)于插頭轉(zhuǎn)換器。目標(biāo)(Target):期待得到的目標(biāo),相當(dāng)于插座。

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

適配器形式

適配器模式包括3種形式:類適配器模式、對(duì)象適配器模式、接口適配器模式(或又稱作缺省適配器模式)。

一、類適配器

代碼:

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 {
    // 作用:處理請(qǐng)求,網(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é)果:

二、對(duì)象適配器

Adapter2(此處的Adaptee是一個(gè)屬性)

package oopdemo01.Design_pattern.adapter;
// 2.組合 (對(duì)象適配器:更常用)
// 真正的適配器,需要連接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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot集成Deepseek4j的項(xiàng)目實(shí)踐

    springboot集成Deepseek4j的項(xiàng)目實(shí)踐

    本文主要介紹了springboot集成Deepseek4j的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • java商城項(xiàng)目實(shí)戰(zhàn)之購物車功能實(shí)現(xiàn)

    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的對(duì)應(yīng)版本梳理

    Springboot各版本與Java JDK的對(duì)應(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)境配置(圖文教程)

    本文主要介紹了Apache?Maven3.6.0的下載安裝和環(huán)境配置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(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)化

    這篇文章主要介紹了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

    這篇文章主要為大家介紹了Spring中一個(gè)少見的引介增強(qiáng)IntroductionAdvisor實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • java導(dǎo)出Excel(非模板)可導(dǎo)出多個(gè)sheet方式

    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)出功能的場(chǎng)景
    2024-09-09
  • 快速了解JAVA垃圾回收機(jī)制

    快速了解JAVA垃圾回收機(jī)制

    這篇文章主要介紹了有關(guān)Java垃圾回收機(jī)制的知識(shí),文中實(shí)例簡(jiǎn)單易懂,方便大家更好的學(xué)習(xí),有興趣的朋友可以了解下
    2020-06-06
  • springboot?log4j2日志框架整合與使用過程解析

    springboot?log4j2日志框架整合與使用過程解析

    這篇文章主要介紹了springboot?log4j2日志框架整合與使用,包括引入maven依賴和添加配置文件log4j2-spring.xml的相關(guān)知識(shí),需要的朋友可以參考下
    2022-05-05
  • Java 十大排序算法之計(jì)數(shù)排序刨析

    Java 十大排序算法之計(jì)數(shù)排序刨析

    計(jì)數(shù)排序是一個(gè)非基于比較的排序算法,該算法于1954年由 Harold H. Seward 提出。它的優(yōu)勢(shì)在于在對(duì)一定范圍內(nèi)的整數(shù)排序時(shí),它的復(fù)雜度為Ο(n+k)(其中k是整數(shù)的范圍),快于任何比較排序算法
    2021-11-11

最新評(píng)論

通化市| 大冶市| 镇康县| 崇仁县| 新疆| 六安市| 吴堡县| 江源县| 军事| 那曲县| 宣恩县| 射洪县| 固始县| 雷州市| 含山县| 平凉市| 澳门| 嘉善县| 海城市| 定襄县| 八宿县| 武陟县| 柘荣县| 叶城县| 尼玛县| 无为县| 日土县| 漠河县| 楚雄市| 孙吴县| 安岳县| 昔阳县| 祁东县| 翁牛特旗| 漾濞| 泾源县| 田东县| 将乐县| 遂宁市| 富蕴县| 怀来县|