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

java開發(fā)只要tomcat設(shè)計(jì)模式用的好下班就能早

 更新時(shí)間:2023年02月10日 10:43:52   作者:程序員拾山  
這篇文章主要為大家介紹了java開發(fā)只要tomcat設(shè)計(jì)模式的示例詳解,<BR>只要設(shè)計(jì)模式用的好下班就能早,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

tomcat作為一款經(jīng)典的輕量級應(yīng)用服務(wù)器,自然也使用了很多優(yōu)雅的設(shè)計(jì)模式。

今天給大家簡單介紹一下tomcat在初始化組件時(shí)使用的幾種設(shè)計(jì)模式。

tomcat大體上的架構(gòu)

組合模式

在tomcat中,把不同的功能設(shè)計(jì)為了不同的組件,比如connector、engine、host、context等。那么在tomcat啟動時(shí),這些組件是如何被一一啟動的呢?

我們在源碼中查看這些組件時(shí),可以發(fā)現(xiàn)這些組件都實(shí)現(xiàn)了Lifecycle接口。

從名字就可以看出,這個接口是用來管理生命周期的。

tomcat通過Lifecycle接口來組合裝載各個組件。比如在一個父組件中,需要調(diào)用某個子組件時(shí),就在init方法調(diào)用子組件的init,在start方法中調(diào)用子組件的start。

這樣的好處在于父組件可以根據(jù)業(yè)務(wù)需要隨意組合子組件,并且在父組件中不用硬編碼的去構(gòu)建子組件的對象,子組件的初始化由子組件的init自己實(shí)現(xiàn)。

觀察者模式

大家有沒有發(fā)現(xiàn),如果父組件調(diào)用子組件的時(shí)候,直接調(diào)用init或者start方法,還是有點(diǎn)強(qiáng)耦合了。如果父組件要調(diào)用多個子組件的時(shí)候,是不是還得修改父組件的方法?

所以,tomcat還使用了觀察者模式,通過訂閱狀態(tài)的變化來實(shí)現(xiàn)對子組件的調(diào)用。

以初始化為例,當(dāng)?shù)谝粋€父組件初始化時(shí),會發(fā)布狀態(tài)變更事件,讓訂閱的子組件進(jìn)行相應(yīng)的初始化。

通過觀察者模式,tomcat輕松的將一連串的組件給啟動起來了。

模板設(shè)計(jì)模式

Lifecycle接口還有兩個抽象子類,LifecycleMBeanBase和LifecycleBase。

這兩個類的作用是將一些比較有共性的方法給抽離了出來,這樣子類就不用再去重復(fù)的實(shí)現(xiàn)了。

這樣不僅保持了代碼的簡潔性,還降低了重復(fù)書寫出錯的概率。

比如通用的init方法。

除了這三種,tomcat當(dāng)然還使用了其他的設(shè)計(jì)模式。本文是從tomcat的生命周期管理類為切入點(diǎn),為大家介紹了tomcat在管理生命周期時(shí),配合使用的幾種設(shè)計(jì)模式。

在我們?nèi)粘5木幋a工作中,通過合適的設(shè)計(jì)模式不僅可以使代碼邏輯更清晰,還可以大大降低出bug的概率,建議大家可以多多嘗試一下。

以上就是java開發(fā)只要tomcat設(shè)計(jì)模式用的好下班就能早的詳細(xì)內(nèi)容,更多關(guān)于java開發(fā)tomcat設(shè)計(jì)模式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java中stringBuilder的用法詳解

    java中stringBuilder的用法詳解

    這篇文章主要介紹了java中stringBuilder的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java黑盒測試之nextDate函數(shù)測試

    Java黑盒測試之nextDate函數(shù)測試

    這篇文章主要介紹了Java黑盒測試之nextDate函數(shù)測試,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)Java黑盒測試的小伙伴們有很大的幫助哦,需要的朋友可以參考下
    2021-05-05
  • Java?中很好用的數(shù)據(jù)結(jié)構(gòu)(你絕對沒用過)

    Java?中很好用的數(shù)據(jù)結(jié)構(gòu)(你絕對沒用過)

    今天跟大家介紹的就是?java.util.EnumMap,也是?java.util?包下面的一個集合類,同樣的也有對應(yīng)的的?java.util.EnumSet,對java數(shù)據(jù)結(jié)構(gòu)相關(guān)知識感興趣的朋友一起看看吧
    2022-05-05
  • Spring組件開發(fā)模式支持SPEL表達(dá)式

    Spring組件開發(fā)模式支持SPEL表達(dá)式

    今天小編就為大家分享一篇關(guān)于Spring組件開發(fā)模式支持SPEL表達(dá)式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • SpringBoot中短時(shí)間連續(xù)請求時(shí)出現(xiàn)Cookie獲取異常問題的解決方案

    SpringBoot中短時(shí)間連續(xù)請求時(shí)出現(xiàn)Cookie獲取異常問題的解決方案

    在 Spring Boot Web 應(yīng)用中,每個請求都會攜帶 HttpServletRequest,其中包含 Cookie 等關(guān)鍵信息,如果某個請求對象的 cookieParsed 標(biāo)記在異步線程中被錯誤修改,可能會導(dǎo)致 短時(shí)間內(nèi)的后續(xù)請求無法正確解析 Cookie,本文給大家介紹了詳細(xì)解決方法,需要的朋友可以參考下
    2025-04-04
  • Java基礎(chǔ)之ClassLoader詳解

    Java基礎(chǔ)之ClassLoader詳解

    這篇文章主要介紹了Java基礎(chǔ)之ClassLoader詳解,文中對ClassLoader有非常詳細(xì)的解說,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java全面解析ttf字體的信息

    Java全面解析ttf字體的信息

    文章介紹了Java如何解析TTF字體文件,提取字體的基本信息、版本信息、版權(quán)和許可證、字符映射以及各種表格信息,通過代碼解析,可以獲取字體的詳細(xì)描述和度量數(shù)據(jù)
    2025-01-01
  • Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別

    Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別

    相信大家在日常開發(fā)中這三種方法用到的應(yīng)該很多,本文主要介紹了Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別,感興趣的可以了解一下
    2021-09-09
  • Spring整合ehCache全過程

    Spring整合ehCache全過程

    這篇文章主要介紹了Spring整合ehCache全過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • SpringBoot項(xiàng)目從18.18M瘦身到0.18M的實(shí)現(xiàn)

    SpringBoot項(xiàng)目從18.18M瘦身到0.18M的實(shí)現(xiàn)

    本文主要介紹了SpringBoot項(xiàng)目從18.18M瘦身到0.18M的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評論

苏尼特左旗| 兴城市| 登封市| 济南市| 武鸣县| 中江县| 宣化县| 承德县| 凯里市| 眉山市| 齐河县| 封开县| 米脂县| 商洛市| 万全县| 宜良县| 策勒县| 石柱| 峨眉山市| 宕昌县| 万州区| 潢川县| 海兴县| 莒南县| 龙胜| 邢台县| 昔阳县| 岳阳县| 南涧| 石阡县| 衡阳市| 成都市| 通州区| 咸阳市| 洪雅县| 浦江县| 桐庐县| 陆川县| 祁门县| 玉田县| 北安市|