1. 程式人生 > >談談我對Spring IOC與DI的理解

談談我對Spring IOC與DI的理解

IOC是一種叫做“控制反轉”的設計思想。

1、較淺的層次——從名字上解析
“控制”就是指對 物件的建立、維護、銷燬等生命週期的控制,這個過程一般是由我們的程式去主動控制的,如使用new關鍵字去建立一個物件(建立),在使用過程中保持引用(維護),在失去全部引用後由GC去回收物件(銷燬)。
“反轉”就是指對 物件的建立、維護、銷燬等生命週期的控制由程式控制改為由IOC容器控制,需要某個物件時就直接通過名字去IOC容器中獲取。

2、更深的層次——提到DI,依賴注入,是IOC的一種重要實現
一個物件的建立往往會涉及到其他物件的建立,比如一個物件A的成員變數持有著另一個物件B的引用,這就是依賴,A依賴於B。IOC機制既然負責了物件的建立,那麼這個依賴關係也就必須由IOC容器負責起來。負責的方式就是DI——依賴注入,通過將依賴關係寫入配置檔案,然後在建立有依賴關係的物件時,由IOC容器注入依賴的物件,如在建立A時,檢查到有依賴關係,IOC容器就把A依賴的物件B建立後注入到A中(組裝,通過反射機制實現),然後把A返回給物件請求者,完成工作。

3、IOC的意義何在?
IOC並沒有實現更多的功能,但它的存在使我們不需要很多程式碼、不需要考慮物件間複雜的耦合關係就能從IOC容器中獲取合適的物件,而且提供了對 物件的可靠的管理,極大地降低了開發的複雜性。