深入理解IoC/DI


 

------------------------------------------------------------------------

理解IoC/DI

1.控制反轉 --> 誰控制誰? 控制什么? 為何叫反轉(對應於正向)?哪些方面反轉了?為何需要反轉?

  誰控制誰?  --> IoC/DI容器控制應用程序

  控制什么? --> IoC/DI容器控制對象本身的創建、實例化; IoC/DI容器控制對象之間的依賴關系

  為何叫反轉(對應於正向)? --> 因為現在應用程序不能主動去獲取外部資源了,而是被動等待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. 在應用程序代碼中不直接進行服務的裝配,但是要描述哪一個組件需要哪一項服務,由容器負責將這些裝配在一起。也就是說:所有的組件都是被動的,組件初始化和專供都是由容器負責,應用程序只是在獲取相應的組件后,實現應用的功能即可。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM