Spring 框架中使用了哪些涉及模式

2021-10-10 08:19:46 字數 1627 閱讀 6728

1、簡單工廠模式(非 23 種設計模式中的一種)

使用方式

beanfactory 介面,根據傳入的唯一標誌(名稱)來獲取 bean 物件。

實現原理

通過乙個工廠類根據傳入的引數,動態建立對應的產品類物件。

優點耦合性低,通過工廠類動態建立 bean 物件,解決了以前硬編碼的耦合性問題,bean 之間的依賴性降低了。

可以進行相關定製化,通過工廠類建立 bean 物件,在 bean 例項化時可以針對 bean 物件進行額外處理,進行我們需要的相關定製化。

2、工廠方法

使用方式

factorybean 介面,以及實現該介面的 bean。

實現原理

spring 在使用 getbean 方法獲取到該工廠 bean,再通過呼叫該 bean 的 getobject 方法獲取對應的返回值得到目標 bean。

3、單例模式

使用方式

spring 的依賴注入

實現原理

spring 的依賴注入(包括 bean 延遲初始化)都是發生在 abstractbeanfactory 的 getbean 方法,getbean 方法中呼叫了 dogetbean 方法內部呼叫 getsingleton 方法進行 bean 的建立。

spring 在進行 bean 單例建立後,提供了乙個 beanfactory 的全域性訪問點,方便程式後續呼叫該單例 bean。

4、介面卡模式

使用方式

spring mvc 中的介面卡 handleradatper

實現原理

優點通過 handleradatper 擴充套件 handler,每次只需要新增乙個新的 handler 以及對應的 handleradatper 就能完成擴充套件。spring 定義了這樣的適配介面,使得每乙個 controller 有對應的介面卡實現類,在擴充套件 controller 時,只需要增加乙個介面卡實現類即可完成 spring mvc 擴充套件。

5、裝飾器模式

使用方式

類名中含有 decorator 的類

實現原理

動態地給物件新增一些額外的功能。

6、**模式

使用方式

aop 底層實現,動態**模式

實現原理

動態**

在執行時進行**,不需要手動編寫**類。

靜態**

需要手動編寫**類,**類引用被**的物件。

一般情況下,spring 在織入(把切面應用到目標物件並建立**物件的過程)切面時,aop 容器會為目標物件動態地建立乙個**物件。

7、觀察者模式

使用方式

spring 事件驅動模型中 listener 的實現

實現原理

8、策略模式

使用方式

spring 的資源訪問 resource 介面

實現原理

resource 介面本身沒有提供訪問任何底層資源的實現邏輯,只是針對不同的底層資源,spring 提供了不同的 resource 實現類,不同的實現類負責不同的資源訪問邏輯。

9、模板方法模式

使用方式

spring 大部分的外接擴充套件

實現原理

通過父類定義好同型別類的框架結構,如:公共方法需要呼叫哪些方法以及順序,子類進行特定方法的實現。

Yii 中使用了哪些設計模式?

單例模式 public function set class,definition array params public function setsingleton class,definition array params 抽象工廠模式 abstract factory 工廠方法模式 facto...

Spring 中使用了那些設計模式呢?

一 spring 中常見的設計模式 工廠模式 beanfactory 模式 aopproxy 委派模式 dispatcherservlet 介面卡模式 handlerapdapter 模板方法模式 jdbctemplate 觀察者模式 contextloaderlistener 二 spring 的...

能說說Spring中都使用了哪些設計模式嗎?

spring ioc核心的設計模式的思想,就是工廠模式。spring本身就是乙個工廠,把所有的bean例項都給放在了spring容器裡 大工廠 如果你要使用bean,就找spring容器就可以了,你自己不用建立物件了 將物件的建立過程放在乙個factory工廠類裡,如果要使用的話,則通過該工廠類來直...