------------------------------------------------------------------------框架
理解IoC/DIspa
1.控制反轉 --> 誰控制誰? 控制什麼? 爲什麼叫反轉(對應於正向)?哪些方面反轉了?爲什麼須要反轉?設計
誰控制誰? --> IoC/DI容器控制應用程序對象
控制什麼? --> IoC/DI容器控制對象自己的建立、實例化; IoC/DI容器控制對象之間的依賴關係blog
爲什麼叫反轉(對應於正向)? --> 由於如今應用程序不能主動去獲取外部資源了,而是被動等待IoC/DI容器給它注入它所須要的資源,因此稱之爲反轉.生命週期
哪些方面反轉了? --> 1.建立對象 2.程序獲取資源的方式反了事件
爲什麼須要反轉? --> 1.引入IoC/DI容器事後,體系更爲鬆散,並且管理更有序; 2.類之間真正實現了鬆散耦合資源
2.依賴 --> 什麼是依賴(按名稱理解、按動詞理解)? 誰依賴於誰? 爲何須要依賴? 依賴什麼東西?開發
什麼是依賴(按名稱理解、按動詞理解)? --> 依賴(按名稱理解):依賴關係; 依賴(按動詞理解):依賴的動做容器
誰依賴於誰? --> 應用程序依賴於IoC/DI容器
爲何須要依賴? --> 由於發生了反轉,應用程序依賴的資源都是IoC/DI容器裏面
依賴什麼東西? --> 應用程序依賴於IoC/DI容器,依賴IoC/DI容器爲它注入所須要的資源。(好比:依賴關係)
3.注入:誰注入於誰? 注入什麼東西? 爲什麼要注入?
誰注入於誰? --> IoC/DI容器注入於應用程序
注入什麼東西? --> 注入應用程序須要的外部資源,好比依賴關係
爲什麼要注入? --> 由於程序要正常運行須要這些外部資源
4.依賴注入和控制反轉是同一律念嗎?
不是同一律念, 其實它們兩個描述的是同一件事件,可是是從不一樣的角度來講:控制反轉是從IoC/DI容器的角度;依賴注入是從應用程序的角度
控制反轉的描述: IoC/DI容器反過來控制應用程序,控制應用程序鎖所須要的外部資源(好比:外部資源)
依賴注入的描述: 應用程序依賴IoC/DI容器,依賴它注入所須要的外部資源。
5.參與者都有哪些?
IoC/DI容器、應用程序
6.IoC/DI是什麼?能作什麼?怎麼作?用在什麼地方?
IoC/DI是什麼?
IoC:就是使用IoC/DI容器反過來控制應用程序所須要的外部資源,這樣的一種程序開發思想。
DI:就是應用程序依賴IoC/DI容器來注入所須要的外部資源,這樣一種程序的開發思想。
能作什麼? --> 鬆散耦合對象
怎麼作? --> 使用Spring框架,裏面有實現好了的IoC/DI容器
用在什麼地方? --> 凡是程序裏面須要使用外部資源的狀況,均可以考慮使用IoC/DI容器
7.什麼是外部資源
對於一個類來說,所謂的外部資源,就是指在本身類的內部不能獲得或實現的東西,好比說:在類裏面須要讀取一個配置文件,那麼這個配置文件就至關於這個類的外部資源。又好比:A類裏面要調用B類,那麼對於A類來說B類就是外部資源。
8. IoC容器
簡單的理解就是:實現IoC思想,並提供對象建立、對象裝配以及對象生命週期管理的軟件就是IoC容器。
對IoC的理解:
a. 應用程序無需主動new對象,而是描述對象應該如何被建立
b. 應用程序不須要主動裝配對象之間的依賴關係,而是描述須要哪一個服務,IoC容器會幫你裝配,被動接受裝配
c. 主動變被動,是一種讓服務消費者不直接依賴於服務提供者的組件設計方式,是一種減小類與類之間依賴的設計原則
9.使用IoC/DI容器開發須要改變思路
a. 應用程序不主動建立對象,可是要描述建立它們的方式
b. 在應用程序代碼中不直接進行服務的裝配,可是要描述哪個組件須要哪一項服務,由容器負責將這些裝配在一塊兒。也就是說:全部的組件都是被動的,組件初始化和專供都是由容器負責,應用程序只是在獲取相應的組件後,實現應用的功能便可。