自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring中用到了哪些設(shè)計(jì)模式?

開(kāi)發(fā) 架構(gòu)
Spring是一個(gè)非常經(jīng)典的框架,它用的的設(shè)計(jì)模式也非常多。而且很多設(shè)計(jì)模式經(jīng)常是混合使用的,都是你中有我,我中有你。所以,我們?cè)陂喿x代碼的時(shí)候,還不能簡(jiǎn)單地?cái)喽硞€(gè)類就一定是只用了某一種設(shè)計(jì)模式。

?一位應(yīng)屆畢業(yè)生被問(wèn)到這樣一道面試題,說(shuō)Spring用到了哪些設(shè)計(jì)模式?其實(shí)只要Spring使用得夠熟練,回答這道題還是非常輕松的。因?yàn)镾pring的命名非常規(guī)范,基本上從類名就可以看得出來(lái)用到了哪些設(shè)計(jì)模式。

今天,我給大家分享一下我的理解。

我給大家總結(jié)以下8種設(shè)計(jì)模式在Spring中的應(yīng)用:

圖片

1、工廠模式。

Spring的BeanFactory類,就是使用了簡(jiǎn)單工廠模式。它主要提供getBean()方法,用來(lái)創(chuàng)建對(duì)象的實(shí)例;我們見(jiàn)得比較多的ApplicationContext也是繼承自BeanFactory。

圖片

2、單例模式。

Spring中的Bean默認(rèn)為singleton單例。我們可以通過(guò)配置Bean的作用域scope參數(shù)來(lái)進(jìn)行修改。Spring Bean一共有5種內(nèi)置的作用域,分別是singleton、prototype、request、session、globalSession。

圖片

3、裝飾器模式。

在Spring中,只要見(jiàn)到以Wrapper命名的類基本都是使用裝飾器模式。比如BeanWrapper,用來(lái)訪問(wèn)Bean的屬性和方法。

圖片

4、策略模式。

Spring中Bean的實(shí)例化采用的就是策略模式。因?yàn)锽ean的實(shí)例化包含原生對(duì)象的實(shí)例化,和代理對(duì)象的實(shí)例化,不同對(duì)象實(shí)例化的邏輯也不一樣,所以實(shí)例化策略也不一樣,比如SimpleInstantiationStrategy就是Spring中默認(rèn)的實(shí)例化策略。

圖片

5、適配器模式。

在Spring,只要是以Adapter命名的類基本都是適配器模式的應(yīng)用。比如MVC模塊中的HandlerAdapter。

圖片

6、代理模式。

比如AOP模塊中的AopProxy,用到了JDK的動(dòng)態(tài)代理和CGLIB字節(jié)碼生成技術(shù);

圖片

7、模板方法模式。

主要用來(lái)解決代碼重復(fù)的問(wèn)題。Spring提供了非常多的模板類來(lái)減少重復(fù)代碼,基本都是以Template結(jié)尾,比如RestTemplate,JmsTemplate,JdbcTemplate。

圖片

8、觀察者模式。

主要用于當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都會(huì)得到通知,在Spring中一般以Listener結(jié)尾,比如ApplicationListener等等。

當(dāng)然,Spring是一個(gè)非常經(jīng)典的框架,它用的的設(shè)計(jì)模式也非常多。而且很多設(shè)計(jì)模式經(jīng)常是混合使用的,都是你中有我,我中有你。所以,我們?cè)陂喿x代碼的時(shí)候,還不能簡(jiǎn)單地?cái)喽硞€(gè)類就一定是只用了某一種設(shè)計(jì)模式。

以上就是我對(duì)Spring中主要設(shè)計(jì)模式的分享。

責(zé)任編輯:武曉燕 來(lái)源: Tom彈架構(gòu)
相關(guān)推薦

2021-06-08 07:04:46

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

2023-07-11 08:50:34

2020-03-18 09:43:37

開(kāi)發(fā)技能代碼

2024-11-26 14:29:48

2019-05-29 17:20:07

Spring設(shè)計(jì)模式Java

2020-01-02 15:43:29

Spring設(shè)計(jì)策略

2021-05-31 07:58:59

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

2021-10-27 17:57:35

設(shè)計(jì)模式場(chǎng)景

2023-10-04 07:27:33

WebPhotoshop

2024-05-30 07:37:30

2021-08-11 17:22:11

設(shè)計(jì)模式單例

2010-05-11 14:23:05

Unix命令

2021-02-15 22:07:18

項(xiàng)目策略模式

2011-09-08 16:30:59

SQL Server查詢

2023-01-09 08:09:07

Spring項(xiàng)目模式

2010-04-02 10:04:21

Oracle結(jié)構(gòu)

2023-07-03 07:39:43

Spring框架設(shè)計(jì)模式

2019-11-07 11:49:14

架構(gòu)運(yùn)維技術(shù)

2021-10-29 09:40:21

設(shè)計(jì)模式軟件

2024-12-16 16:06:30

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)