依賴注入/控制反轉學習筆記

最近在學習js的開發框架好比AngularJS、Meteor、Backbone等,這些框架的一個特色就是依賴注入,由於一直對這個概念雲山霧罩,因此特地花時間學習了一下,把學習筆記寫在這裏。html

------------------------------------------------------------------------
框架

控制反轉(IoC:Inversion of Control)函數

依賴注入(DI:Dependency Injection)學習

控制反轉是Java一些開發框架的核心(以Spring爲表明),隨着對這種模式的討論愈來愈熱烈,一位大牛Martin Fowler寫出了一篇深具影響力的文章《Inversion of Control Containers and the Dependency Injection pattern》不光深刻探討了控制反轉這個模式還提出一個更貼切的稱呼---依賴注入,控制反轉和依賴注入實際上是等價的,只不過強調的方面不一樣。ui

IOC控制反轉:說的是建立對象實例的控制權從代碼控制剝離到IOC容器控制,實際就是你在xml文件控制,側重於原理。spa

DI依賴注入:說的是建立對象實例時,爲這個對象注入屬性值或其它對象實例,側重於實現。
.net


Martin的文章也有被翻譯成中文版翻譯


國內某位大牛在Martin的文章之上寫的解讀unix


其餘一些文章(目前正在看,但還沒看懂)xml

Spring框架中IOC控制反轉和DI依賴注入區別       

控制反轉與依賴注入  

Object Builder Application Block(中文)


目前大概有三種依賴注入的方式:

類型1 (基於接口): 可服務的對象須要實現一個專門的接口,該接口提供了一個對象,能夠從用這個對象查找依賴(其它服務)。早期的容器Excalibur使用這種模式。

類型2 (基於setter): 經過JavaBean的屬性(setter方法)爲可服務對象指定服務。HiveMind和Spring採用這種方式。

類型3 (基於構造函數): 經過構造函數的參數爲可服務對象指定服務。PicoContainer只使用這種方式。HiveMind和Spring也使用這種方式。

相關文章
相關標籤/搜索