深刻理解IoC/DI

 

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

理解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. 在應用程序代碼中不直接進行服務的裝配,可是要描述哪個組件須要哪一項服務,由容器負責將這些裝配在一塊兒。也就是說:全部的組件都是被動的,組件初始化和專供都是由容器負責,應用程序只是在獲取相應的組件後,實現應用的功能便可。

相關文章
相關標籤/搜索