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

Java設(shè)計(jì)模式之外觀模式的實(shí)現(xiàn)方式

 更新時(shí)間:2023年11月30日 10:03:43   作者:啊幾  
這篇文章主要介紹了Java設(shè)計(jì)模式之外觀模式的實(shí)現(xiàn)方式,外觀模式隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個(gè)客戶端可以訪問系統(tǒng)的接口,這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它向現(xiàn)有的系統(tǒng)添加一個(gè)接口,來隱藏系統(tǒng)的復(fù)雜性,需要的朋友可以參考下

什么是外觀模式?

外觀模式(Facade Pattern)隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個(gè)客戶端可以訪問系統(tǒng)的接口。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它向現(xiàn)有的系統(tǒng)添加一個(gè)接口,來隱藏系統(tǒng)的復(fù)雜性。 這種模式涉及到一個(gè)單一的類,該類提供了客戶端請求的簡化方法和對現(xiàn)有系統(tǒng)類方法的委托調(diào)用。

實(shí)例說明

現(xiàn)在有一個(gè)回家打開燈,打開空調(diào),使用電腦的場景??梢允褂猛庥^模式設(shè)計(jì),燈、空調(diào)和電腦都是子系統(tǒng)

三個(gè)子系統(tǒng)類

public class Computer {
    public void on(){
        System.out.println("打開電腦");
    }
    public void off(){
        System.out.println("關(guān)閉電腦");
    }
}
public class Light {
    public void on(){
        System.out.println("打開燈");
    }
    public void off(){
        System.out.println("關(guān)閉燈");
    }
}

public class AirConditioning {
    public void on(){
        System.out.println("打開空調(diào)");
    }
    public void off(){
        System.out.println("關(guān)閉空調(diào)");
    }
}

如果不適用外觀模式

客戶端類

public class Client {
    public static void main(String[] args) {
        AirConditioning airConditioning = new AirConditioning();
        Computer computer = new Computer();
        Light light = new Light();
        //所有子系統(tǒng)打開
        light.on();
        airConditioning.on();
        computer.on();
        //所有子系統(tǒng)關(guān)閉
        computer.off();
        airConditioning.off();
        light.off();
    }
}

子系統(tǒng)和客戶端耦合,每當(dāng)子系統(tǒng)有改變,都需要修改客戶端

當(dāng)使用外觀模式

外觀類

public class RoomFacade {
    AirConditioning airConditioning;
    Light light;
    Computer computer;

    public RoomFacade(){
        airConditioning = new AirConditioning();
        light = new Light();
        computer = new Computer();
    }

    public void on(){
        light.on();
        airConditioning.on();
        computer.on();
    }
    
    public void off(){
        computer.off();
        airConditioning.off();
        light.off();
    }
}

接下來客戶端只需要和外觀類交互即可,不用知道子系統(tǒng)內(nèi)部的實(shí)現(xiàn)

客戶端類

public class Client {
    public static void main(String[] args) {
        RoomFacade facade = new RoomFacade();
        facade.on();
        facade.off();
    }
}

可見客戶端想使用子系統(tǒng)十分簡單

使用場景

  • 為復(fù)雜的模塊或子系統(tǒng)提供外界訪問的模塊。
  • 子系統(tǒng)相對獨(dú)立。
  • 預(yù)防低水平人員帶來的風(fēng)險(xiǎn)。

外觀模式的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 客戶端不與系統(tǒng)耦合。雖然外觀類和系統(tǒng)耦合,但是客戶端不與系統(tǒng)耦合,如果增加子系統(tǒng),并不需要修改客戶端,只需要修改外觀類。
  • 簡單易用。客戶端不需要了解子系統(tǒng)內(nèi)部實(shí)現(xiàn),只需要和外觀類交互即可,調(diào)用起來非常簡單。

缺點(diǎn)

  • 如果設(shè)計(jì)不當(dāng),增加新的子系統(tǒng)可能需要修改外觀類源代碼,違反開閉原則。

到此這篇關(guān)于Java設(shè)計(jì)模式之外觀模式的實(shí)現(xiàn)方式的文章就介紹到這了,更多相關(guān)Java外觀模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析如何利用Spring AI構(gòu)建一個(gè)簡單的問答系統(tǒng)

    淺析如何利用Spring AI構(gòu)建一個(gè)簡單的問答系統(tǒng)

    Spring AI是Spring生態(tài)系統(tǒng)的最新成員,旨在簡化AI服務(wù)與Spring應(yīng)用的集成過程,本文小編就來和大家簡單介紹一下如何利用Spring AI構(gòu)建一個(gè)簡單的問答系統(tǒng)吧
    2025-05-05
  • sentinel?整合spring?cloud限流的過程解析

    sentinel?整合spring?cloud限流的過程解析

    這篇文章主要介紹了sentinel?整合spring?cloud限流,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java實(shí)現(xiàn)將圖片上傳到webapp路徑下 路徑獲取方式

    Java實(shí)現(xiàn)將圖片上傳到webapp路徑下 路徑獲取方式

    這篇文章主要介紹了Java實(shí)現(xiàn)將圖片上傳到webapp路徑下 路徑獲取方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 基于google zxing的Java二維碼生成與解碼

    基于google zxing的Java二維碼生成與解碼

    這篇文章主要為大家詳細(xì)介紹了基于google zxing的Java二維碼生成與解碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • SpringBoot后端接收數(shù)組對象的實(shí)現(xiàn)

    SpringBoot后端接收數(shù)組對象的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot后端接收數(shù)組對象的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 基于SpringBoot+FFmpeg+ZLMediaKit實(shí)現(xiàn)本地視頻推流

    基于SpringBoot+FFmpeg+ZLMediaKit實(shí)現(xiàn)本地視頻推流

    文章介紹了如何在服務(wù)器上安裝和配置ZLMediaKit和FFmpeg,以及如何使用SpringBoot實(shí)現(xiàn)視頻推流和播放功能,包括環(huán)境準(zhǔn)備、后端實(shí)現(xiàn)和使用說明,涵蓋了推流和播放的完整流程,需要的朋友可以參考下
    2025-11-11
  • 最新評論

    金门县| 界首市| 武义县| 盈江县| 二手房| 达尔| 平陆县| 吴江市| 涿州市| 盈江县| 武义县| 岚皋县| 抚顺市| 溆浦县| 道真| 汉源县| 云梦县| 敦化市| 巴彦淖尔市| 桃园县| 翁牛特旗| 乐至县| 喀什市| 文安县| 建始县| 平邑县| 平和县| 杭锦后旗| 新巴尔虎左旗| 萨嘎县| 怀仁县| 彰化市| 田林县| 台州市| 苏尼特右旗| 安义县| 鄯善县| 安化县| 湖口县| 嘉义市| 齐河县|