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

Spring中的八大模式簡(jiǎn)單介紹

 更新時(shí)間:2023年06月26日 11:38:55   作者:@每天都要敲代碼  
這篇文章主要介紹了Spring中的八大模式簡(jiǎn)單介紹,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一:Spring中的八大模式

Spring中的八大模式,有很多我們前面已經(jīng)講過(guò)了,這里只需要大概有個(gè)印象,后期會(huì)出一個(gè)專門對(duì)23種設(shè)計(jì)模式的詳解!

1. 簡(jiǎn)單工廠模式

BeanFactory的getBean()方法,通過(guò)唯一標(biāo)識(shí)來(lái)獲取Bean對(duì)象。是典型的簡(jiǎn)單工廠模式(靜態(tài)工廠模式);主要包括三部分:抽象產(chǎn)品角色、具體產(chǎn)品角色、工廠類角色;這個(gè)靜態(tài)方法所在的工廠類相當(dāng)于一個(gè)上帝類,或者說(shuō)全能類,所有產(chǎn)品一個(gè)工廠,一旦出現(xiàn)故障,整個(gè)系統(tǒng)就會(huì)癱瘓;并且不符合OCP開(kāi)閉原則。不屬于23種設(shè)計(jì)模式!

2. 工廠方法模式

FactoryBean是典型的工廠方法模式;主要包括四部分:抽象產(chǎn)品角色、具體產(chǎn)品角色、抽象工廠角色、具體工廠角色;符合OCP開(kāi)閉原則,但是存在類爆炸問(wèn)題!在配置文件中通過(guò)factory-method屬性來(lái)指定工廠方法,該方法是一個(gè)實(shí)例方法。

3. 單例模式

Spring用的是雙重判斷加鎖的單例模式;單列模式的實(shí)現(xiàn),包括餓漢式和懶漢式;請(qǐng)看下面代碼,我們之前講解Bean的循環(huán)依賴的時(shí)候見(jiàn)過(guò):

4. 代理模式

代理模式包括靜態(tài)代理和動(dòng)態(tài)代理,動(dòng)態(tài)代理又包括JDK動(dòng)態(tài)代理(只能代理接口)和CJLIB動(dòng)態(tài)代理(類和接口都可以代理)。Spring的面向切面AOP就是使用了動(dòng)態(tài)代理實(shí)現(xiàn)的!

5. 裝飾器模式

JavaSE中的IO流是非常典型的裝飾器模式!

Spring 中配置 DataSource 的時(shí)候,這些dataSource可能是各種不同類型的,比如不同的數(shù)據(jù)庫(kù):Oracle、SQL Server、MySQL等,也可能是不同的數(shù)據(jù)源:比如apache 提供的org.apache.commons.dbcp.BasicDataSource、spring提供的org.springframework.jndi.JndiObjectFactoryBean等。

這時(shí),能否在盡可能少修改原有類代碼下的情況下,做到動(dòng)態(tài)切換不同的數(shù)據(jù)源?此時(shí)就可以用到裝飾者模式。

Spring根據(jù)每次請(qǐng)求的不同,將dataSource屬性設(shè)置成不同的數(shù)據(jù)源,以到達(dá)切換數(shù)據(jù)源的目的。

Spring中類名中帶有:Decorator和Wrapper單詞的類,都是裝飾器模式。

6. 觀察者模式

定義對(duì)象間的一對(duì)多的關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)更新。

Spring中觀察者模式一般用在listener(監(jiān)聽(tīng)器)的實(shí)現(xiàn)。Servlet的ServletContextListener就是一個(gè)觀察者模式:其中ServletContextListener就是觀察者、ServletContext就是被觀察者、ServletContext對(duì)象被創(chuàng)建或ServletContext對(duì)象被銷毀等就是事件。

Spring中的事件編程模型就是觀察者模式的實(shí)現(xiàn)。在Spring中定義了一個(gè)ApplicationListener接口,用來(lái)監(jiān)聽(tīng)Application的事件,Application其實(shí)就是ApplicationContext,ApplicationContext內(nèi)置了幾個(gè)事件,其中比較容易理解的是:ContextRefreshedEvent、ContextStartedEvent、ContextStoppedEvent、ContextClosedEvent

7. 策略模式

策略模式是行為性模式,調(diào)用不同的方法,適應(yīng)行為的變化 ,強(qiáng)調(diào)父類的調(diào)用子類的特性 。

getHandler是HandlerMapping接口中的唯一方法,用于根據(jù)請(qǐng)求找到匹配的處理器。

比如:我們自己寫了AccountDao接口,然后這個(gè)接口下有不同的實(shí)現(xiàn)類:AccountDaoForMySQL,AccountDaoForOracle。對(duì)于service來(lái)說(shuō)不需要關(guān)心底層具體的實(shí)現(xiàn),只需要面向AccountDao接口調(diào)用,底層可以靈活切換實(shí)現(xiàn),這就是策略模式!

8. 模板方法模式

Spring中的JdbcTemplate類就是一個(gè)模板類。它就是一個(gè)模板方法設(shè)計(jì)模式的體現(xiàn)。在模板類的模板方法execute中編寫核心算法,具體的實(shí)現(xiàn)步驟在子類中完成。

到此這篇關(guān)于Spring中的八大模式簡(jiǎn)單介紹的文章就介紹到這了,更多相關(guān)Spring八大模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解析Java編程之Synchronized鎖住的對(duì)象

    解析Java編程之Synchronized鎖住的對(duì)象

    這篇文章主要介紹了解析Java編程之Synchronized鎖住的對(duì)象,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Java快速排序案例講解

    Java快速排序案例講解

    這篇文章主要介紹了Java快速排序案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • JAVA異常分類和處理解析

    JAVA異常分類和處理解析

    這篇文章主要介紹了JAVA異常分類和處理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • java基礎(chǔ)之初始化ArrayList時(shí)直接賦值的4種方式總結(jié)

    java基礎(chǔ)之初始化ArrayList時(shí)直接賦值的4種方式總結(jié)

    ArrayList是Java中的一個(gè)類,它是Java集合框架中的一部分,用于實(shí)現(xiàn)動(dòng)態(tài)數(shù)組,下面這篇文章主要給大家介紹了關(guān)于java基礎(chǔ)之初始化ArrayList時(shí)直接賦值的4種方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Springboot整合quartz實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)實(shí)例

    Springboot整合quartz實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)實(shí)例

    這篇文章主要介紹了Springboot整合quartz實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)代碼實(shí)例,Quartz?是一款功能強(qiáng)大的開(kāi)源任務(wù)調(diào)度框架,幾乎可以集成到任何?Java?應(yīng)用程序中,Quartz?可用于創(chuàng)建簡(jiǎn)單或復(fù)雜的任務(wù)調(diào)度,用以執(zhí)行數(shù)以萬(wàn)計(jì)的任務(wù),需要的朋友可以參考下
    2023-08-08
  • Spring Bean的線程安全問(wèn)題

    Spring Bean的線程安全問(wèn)題

    Spring容器中的Bean是否線程安全,本文主要介紹了Spring Bean的線程安全問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Spring?Boot?微服務(wù)中集成?MyBatis-Plus?與集成原生?MyBatis在配置上的不同

    Spring?Boot?微服務(wù)中集成?MyBatis-Plus?與集成原生?MyBatis在配置上的不同

    在Spring?Boot微服務(wù)中,MyBatis-Plus通過(guò)其Boot?Starter和豐富的配置屬性,極大的簡(jiǎn)化了MyBatis的集成和配置工作,尤其是對(duì)于全局設(shè)置和常用插件的使用,本文給大家介紹Spring?Boot?微服務(wù)中集成?MyBatis-Plus與集成原生?MyBatis?有哪些配置上的不同,感興趣的朋友一起看看吧
    2025-04-04
  • Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別

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

    相信大家在日常開(kāi)發(fā)中這三種方法用到的應(yīng)該很多,本文主要介紹了Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別,感興趣的可以了解一下
    2021-09-09
  • 打開(kāi).properties中文顯示unicode編碼問(wèn)題以及解決

    打開(kāi).properties中文顯示unicode編碼問(wèn)題以及解決

    這篇文章主要介紹了打開(kāi).properties中文顯示unicode編碼問(wèn)題以及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringBoot如何訪問(wèn)不同的數(shù)據(jù)庫(kù)的方法實(shí)現(xiàn)

    SpringBoot如何訪問(wèn)不同的數(shù)據(jù)庫(kù)的方法實(shí)現(xiàn)

    本文主要介紹了在SpringBoot應(yīng)用中配置和管理多個(gè)數(shù)據(jù)源的方法,包括使用SpringBoot官方支持的配置方式和第三方庫(kù)實(shí)現(xiàn)多數(shù)據(jù)源配置,感興趣的可以了解一下
    2024-11-11

最新評(píng)論