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

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

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

什么是外觀模式?

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

實例說明

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

三個子系統(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)和客戶端耦合,每當子系統(tǒ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)部的實現(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)相對獨立。
  • 預(yù)防低水平人員帶來的風(fēng)險。

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

優(yōu)點

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

缺點

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

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

相關(guān)文章

  • idea克隆maven項目的方法步驟(圖文)

    idea克隆maven項目的方法步驟(圖文)

    這篇文章主要介紹了idea克隆maven項目的方法步驟(圖文),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • maven安裝與環(huán)境配置圖文教程

    maven安裝與環(huán)境配置圖文教程

    這篇文章主要為大家詳細介紹了maven安裝與環(huán)境配置圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Java使用ffmpeg和mencoder實現(xiàn)視頻轉(zhuǎn)碼

    Java使用ffmpeg和mencoder實現(xiàn)視頻轉(zhuǎn)碼

    這篇文章主要為大家詳細介紹了Java使用ffmpeg和mencoder實現(xiàn)視頻轉(zhuǎn)碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 簡單談?wù)刯ava中final,finally,finalize的區(qū)別

    簡單談?wù)刯ava中final,finally,finalize的區(qū)別

    Java中final、finally、finalize的區(qū)別與用法,困擾了不少學(xué)習(xí)者,下面我們就這個問題進行一些探討,希望對大家的學(xué)習(xí)有所幫助。
    2016-05-05
  • nacos2.0.3版本安裝和配置步驟

    nacos2.0.3版本安裝和配置步驟

    本文講述了如何安裝Nacos 2.0.3版本,包括下載、解壓、配置和啟動服務(wù)的步驟,結(jié)合圖文給大家講解的非常詳細,感興趣的朋友一起看看吧
    2024-12-12
  • Java虛擬機JVM優(yōu)化實戰(zhàn)的過程全記錄

    Java虛擬機JVM優(yōu)化實戰(zhàn)的過程全記錄

    有人說Java之所以能夠崛起,JVM功不可沒。Java虛擬機最初服務(wù)于讓Java語言凌駕于平臺之上,實現(xiàn)“編寫一次,到處運行”,那么下面這篇文章主要給大家分享了個關(guān)于Java虛擬機JVM優(yōu)化實戰(zhàn)的過程全記錄,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • 使用指定的JDK啟動IDEA的三種方法

    使用指定的JDK啟動IDEA的三種方法

    今天小編就為大家分享一篇關(guān)于使用指定的JDK啟動IDEA的三種方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 解決idea npm:無法將“npm”項識別為cmdlet、函數(shù)、腳本文件或可運行程序的名稱問題

    解決idea npm:無法將“npm”項識別為cmdlet、函數(shù)、腳本文件或可運行程序的名稱問題

    在IDEA中運行npm命令時出現(xiàn)無法識別的錯誤,通常是由于npm環(huán)境變量配置不正確引起,解決方法包括以管理員身份運行IDEA,確認node和npm是否正確安裝及配置環(huán)境變量,需要在系統(tǒng)環(huán)境變量中添加node.js的安裝路徑,并設(shè)置npm的全局模塊和緩存路徑
    2024-10-10
  • Java將RTF文檔轉(zhuǎn)換為Word/PDF/HTML/圖片

    Java將RTF文檔轉(zhuǎn)換為Word/PDF/HTML/圖片

    RTF文檔因其跨平臺兼容性而廣泛使用,但有時在不同的應(yīng)用場景可能需要特定的文檔格式,所以本文來講講如何通過Java將RTF轉(zhuǎn)換為Word/PDF/HTML和圖片格式
    2025-01-01
  • java判斷兩個時間是不是同一天的方法

    java判斷兩個時間是不是同一天的方法

    這篇文章主要介紹了java判斷兩個時間是不是同一天的方法,需要的朋友可以參考下
    2014-02-02

最新評論