欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

適配器模式

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)文章

  • JavaScript實(shí)現(xiàn)貪吃蛇游戲

    JavaScript實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • springboot線程池監(jiān)控的簡單實(shí)現(xià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)目的方法

    這篇文章主要介紹了詳解Java從后臺重定向(redirect)到另一個(gè)項(xiàng)目的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-04-04
  • 樹莓派.GPRS.短信接收器

    樹莓派.GPRS.短信接收器

    這篇文章主要介紹了樹莓派.GPRS.短信接收器的相關(guān)知識,需要的朋友可以參考下
    2017-10-10
  • 深入了解Java中的static關(guān)鍵字

    深入了解Java中的static關(guān)鍵字

    這篇文章主要為大家詳細(xì)介紹了Java中的static關(guān)鍵字的用法的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-11-11
  • Mybatis中mapper.xml實(shí)現(xiàn)熱加載介紹

    Mybatis中mapper.xml實(shí)現(xiàn)熱加載介紹

    大家好,本篇文章主要講的是Mybatis中mapper.xml實(shí)現(xiàn)熱加載介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Java實(shí)現(xiàn)API sign簽名校驗(yàn)的方法詳解

    Java實(shí)現(xiàn)API sign簽名校驗(yàn)的方法詳解

    為了防止中間人攻擊,有時(shí)我們需要進(jìn)行API sign 簽名校驗(yàn)。本文將用Java語言實(shí)現(xiàn)API sign 簽名校驗(yàn),感興趣的小伙伴可以嘗試一下
    2022-07-07
  • SpringBoot中選擇性加載Bean的幾種方式小結(jié)

    SpringBoot中選擇性加載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
  • Java SpringBoot自定義starter詳解

    Java SpringBoot自定義starter詳解

    大家好,本篇文章主要講的是Java SpringBoot自定義starter詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次
    2022-01-01
  • 關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯

    關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯

    Log4j?是Apache為Java提供的日志管理工具。他與System.out.println()的作用相似,用來跟蹤、調(diào)試、維護(hù)程序。這篇文章主要介紹了關(guān)于log4j漏洞修復(fù)解決方案及源碼編譯,需要的朋友可以參考下
    2021-12-12

最新評論