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

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)的細(xì)節(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)文章

  • Jackson序列化和反序列化忽略字段操作

    Jackson序列化和反序列化忽略字段操作

    這篇文章主要介紹了Jackson序列化和反序列化忽略字段操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 如何使用Spring自定義Xml標(biāo)簽

    如何使用Spring自定義Xml標(biāo)簽

    要實現(xiàn)自定義的xml配置,需要有兩個默認(rèn)spring配置文件來支持。一個是spring.schemas,一個是spring.handlers,前者是為了驗證你自定義的xml配置文件是否符合你的格式要求,后者是告訴spring該如何來解析你自定義的配置文件。本文將介紹如何使用Spring自定義Xml標(biāo)簽
    2021-06-06
  • springboot?加載本地jar到maven的實現(xiàn)方法

    springboot?加載本地jar到maven的實現(xiàn)方法

    如何在SpringBoot項目中加載本地jar到Maven本地倉庫,使用Maven的install-file目標(biāo)來實現(xiàn),本文結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Java為什么匿名內(nèi)部類參數(shù)引用需要用final進行修飾?

    Java為什么匿名內(nèi)部類參數(shù)引用需要用final進行修飾?

    今天小編就為大家分享一篇關(guān)于Java為什么匿名內(nèi)部類參數(shù)引用需要用final進行修飾?,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 基于springBoot配置文件properties和yml中數(shù)組的寫法

    基于springBoot配置文件properties和yml中數(shù)組的寫法

    這篇文章主要介紹了springBoot配置文件properties和yml中數(shù)組的寫法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java流處理stream使用詳解

    Java流處理stream使用詳解

    Java8的另一大亮點Stream,它與java.io包里的InputStream和OutputStream是完全不同的概念,下面這篇文章主要給大家介紹了關(guān)于Java8中Stream詳細(xì)使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 使用Autowired為什么會被IDEA警告最佳修改方法

    使用Autowired為什么會被IDEA警告最佳修改方法

    這篇文章主要介紹了使用Autowired為什么會被IDEA警告,應(yīng)該怎么修改最佳,除了使用@Autowired以外,我們其實也有幾種好用的方式,使用@Resource替代@Autiwired方法是其中一種,只需要改變一個注解,這里就不展示了,需要的朋友可以參考下
    2023-02-02
  • Spring Data JPA實現(xiàn)排序與分頁查詢超詳細(xì)流程講解

    Spring Data JPA實現(xiàn)排序與分頁查詢超詳細(xì)流程講解

    在介紹Spring Data JPA的時候,我們首先認(rèn)識下Hibernate。Hibernate是數(shù)據(jù)訪問解決技術(shù)的絕對霸主,使用O/R映射技術(shù)實現(xiàn)數(shù)據(jù)訪問,O/R映射即將領(lǐng)域模型類和數(shù)據(jù)庫的表進行映射,通過程序操作對象而實現(xiàn)表數(shù)據(jù)操作的能力,讓數(shù)據(jù)訪問操作無須關(guān)注數(shù)據(jù)庫相關(guān)的技術(shù)
    2022-10-10
  • java為什么會出現(xiàn)精度丟失這種現(xiàn)象你知道嗎

    java為什么會出現(xiàn)精度丟失這種現(xiàn)象你知道嗎

    這篇文章主要介紹了Java精度丟失的問題,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2021-08-08
  • JSONObject與JSONArray的使用

    JSONObject與JSONArray的使用

    這篇文章主要介紹了JSONObject與JSONArray的使用 的相關(guān)資料,需要的朋友可以參考下
    2016-06-06

最新評論

龙胜| 玉门市| 呈贡县| 开阳县| 沐川县| 广州市| 莎车县| 小金县| 勐海县| 肇东市| 章丘市| 凌源市| 临武县| 津南区| 新竹县| 措美县| 山西省| 通渭县| 永城市| 泰顺县| 汽车| 昭通市| 乌恰县| 桂阳县| 信宜市| 珠海市| 秦皇岛市| 泗洪县| 达孜县| 桦川县| 措美县| 桃源县| 平乐县| 治多县| 黑龙江省| 平和县| 石河子市| 崇明县| 贵阳市| 罗源县| 德惠市|