今天中午吃飯的時候,和同僚閑聊,聊着聊着聊到了IOC(控制反轉)和DI(依賴注入),感覺各有各的說法:
今天下班了,就來重新總結一下IOC(控制反轉)和DI(依賴注入),以便于了解:
1. 首先來說一說IOC(控制反轉)
說這個控制反轉按字分為兩段來說:
-
第一段就來說說控制
在傳統的java ee項目設計中,我們都是在對象内部使用new進行建立對象,是程式主動去建立依賴對象,但是在IOC中都是使用IOC容器來建立這些對象,控制這些對象,那麼控制了什麼呢,它主要是控制了外面資源的擷取
-
第二段就來說說反轉
首先它說是反轉,我們都知道有反必有正,那麼正轉有是什麼呢,所謂正轉,就是傳統應用程式是由我們程式猿手動的在對象中主動控制,直接擷取依賴對象,這就是正轉,反轉則是:由IOC(容器)幫我們查找注入依賴對象,對象被動的接受依賴對象,反轉則是這樣的,那麼反轉了什麼,隻是依賴對象的擷取被反轉了
2.再來說一說DI(依賴注入)
DI:元件之間依賴關系由容器在運作期決定,即由容器動态的将某個依賴關系注入到元件之中
就以 “依賴注入” 這幾個字,深入了解一下:
- 誰依賴誰:應用程式依賴于IOC容器
- 為什麼依賴:應用程式需要IOC容器來提供對象需要的資源
- 誰注入誰:IOC容器注入應該程式依賴的對象
- 注入了什麼:注入了依賴對象所需要的資源