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容器中獲取合適的對象,而且提供了對對象的可靠的管理,大大降低了開發的複雜性。
以上是Spring IOC與DI的理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!