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

Java結(jié)構(gòu)型模式之門面模式詳解

 更新時間:2023年02月17日 10:15:12   作者:非凡的小笨魚  
門面模式又叫外觀模式(Facade Pattern),主要用于隱藏系統(tǒng)的復(fù)雜性,并向客戶端提供了一個客戶端可以訪問系統(tǒng)的接口,本文通過實例代碼給大家介紹下java門面模式的相關(guān)知識,感興趣的朋友一起看看吧

一.介紹

門面模式(Facade Pattern)屬于結(jié)構(gòu)型模式。門面模式又叫作外觀模式,通過給多個復(fù)雜的子系統(tǒng)提供一個門面(高層接口),使這些子系統(tǒng)更加容易的被訪問,客戶端與門面直接通信,封裝/隱藏背后子系統(tǒng)的細節(jié)與復(fù)雜度

二.UML類圖

未使用門面模式

使用門面模式

三.具體代碼

業(yè)務(wù)代碼

class Facade {
    private SubSystem1 subSystem1 = new SubSystem1();
    private SubSystem2 subSystem2 = new SubSystem2();
    private SubSystem3 subSystem3 = new SubSystem3();
    public void doSomething(){
        subSystem1.operation1();
        subSystem2.operation2();
        subSystem3.operation3();
    }
}
class SubSystem1 {
    void operation1(){}
}
class SubSystem2 {
    void operation2(){}
}
class SubSystem3 {
    void operation3(){}
}

客戶端

public class Client {
    private static Facade facade = new Facade();
    public static void main(String[] args) {
        facade.doSomething();
    }
}

四.使用場景

1.繼承第三方系統(tǒng)

  • 當(dāng)一個復(fù)雜系統(tǒng)的子系統(tǒng)很多時,門面模式可以為系統(tǒng)設(shè)計一個簡單的接口供外界訪問
  • 當(dāng)客戶端與多個子系統(tǒng)之間存在很大的聯(lián)系時,引入門面模式可將它們分離,從而提高子系統(tǒng)的獨立性和可移植性

2.組件對外提供API

  • 簡化組件調(diào)用API,提供統(tǒng)一訪問接口

3.分層架構(gòu)層之間調(diào)用

  • 對分層結(jié)構(gòu)系統(tǒng)構(gòu)建時,使用門面模式定義子系統(tǒng)中每層的入口點可以簡化子系統(tǒng)之間的依賴關(guān)系

五.優(yōu)缺點

優(yōu)點

  • 遵循迪米特法則
  • 降低耦合度,屏蔽子系統(tǒng)組件,減少調(diào)用端代碼量

缺點

  • 違背開閉原則,如果修改子系統(tǒng)的代碼,需要修改Facade的代碼

六.在tomcat中的應(yīng)用

org.apache.catalina.connector.RequestFacade

到此這篇關(guān)于Java結(jié)構(gòu)型模式之門面模式詳解的文章就介紹到這了,更多相關(guān)Java門面模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java并發(fā)LinkedBlockingQueue源碼分析

    Java并發(fā)LinkedBlockingQueue源碼分析

    這篇文章主要為大家介紹了Java并發(fā)LinkedBlockingQueue源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Java?Selenide?簡介與用法

    Java?Selenide?簡介與用法

    Selenium?是目前用的最廣泛的Web?UI?自動化測試框架,本文給大家介紹下Java?Selenide使用,感興趣的朋友一起看看吧
    2022-01-01
  • springboot集成websocket的四種方式小結(jié)

    springboot集成websocket的四種方式小結(jié)

    本文主要介紹了springboot集成websocket的四種方式小結(jié),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • SpringBoot如何從配置文件中讀取配置參數(shù)

    SpringBoot如何從配置文件中讀取配置參數(shù)

    這篇文章主要介紹了SpringBoot如何從配置文件中讀取配置參數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java實現(xiàn)簡單學(xué)生信息管理系統(tǒng)

    Java實現(xiàn)簡單學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JVM中堆內(nèi)存和棧內(nèi)存的區(qū)別

    JVM中堆內(nèi)存和棧內(nèi)存的區(qū)別

    本文主要介紹了JVM中堆內(nèi)存和棧內(nèi)存的區(qū)別,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 關(guān)于Java利用反射實現(xiàn)動態(tài)運行一行或多行代碼

    關(guān)于Java利用反射實現(xiàn)動態(tài)運行一行或多行代碼

    這篇文章主要介紹了關(guān)于Java利用反射實現(xiàn)動態(tài)運行一行或多行代碼,借鑒了別人的方法和書上的內(nèi)容,最后將題目完成了,和大家一起分享以下解決方法,需要的朋友可以參考下
    2023-04-04
  • Java?SpringBoot操作Redis

    Java?SpringBoot操作Redis

    這篇文章主要介紹了SpringBoot如何操作Redis,文章中有詳細的代碼示例,有一定的參考價值,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • Java?18?新特性之Web服務(wù)器?jwebserver功能

    Java?18?新特性之Web服務(wù)器?jwebserver功能

    JEP?408:?Simple?Web?Server,是這次Java?18推出的一個比較獨立的全新功能點。我們可以通過命令行工具來啟動一個提供靜態(tài)資源訪問的迷你Web服務(wù)器,本文通過一個構(gòu)建HTML頁面的例子,來嘗試一下jwebserver的功能
    2022-04-04
  • spring boot環(huán)境抽象的實現(xiàn)方法

    spring boot環(huán)境抽象的實現(xiàn)方法

    在實際開發(fā)中,開發(fā)人員在編寫springboot的時候通常要在本地環(huán)境測試然后再部署到Production環(huán)境,這兩種環(huán)境一般來講是不同的,最主要的區(qū)別就是數(shù)據(jù)源的不同。本文主要介紹了這兩種,感興趣的可以了解一下
    2019-04-04

最新評論