IoC(控制反轉)/DI(依賴注入)
- 涉及到的疑問
- 參與者都有誰?
- 誰依賴誰?為什么需要依賴
- 誰注入誰?為什么需要注入
- 誰控制誰?控制什么?為什么需要反轉?什么是反轉?什么是轉?
- Ioc==DI?
- 開始回答
- 參與者都有誰?
一個是對象,一個IoC容器,一個是對象的外資源,如對象依賴的對象。 - 誰依賴誰?為什么需要依賴
初代:對象依賴外部資源,對象需要外部資源完成自己的動作。
Ioc后:對象依賴Ioc容器,需要Ioc容器注入外部資源。 - 誰注入誰?為什么需要注入?
Ioc容器注入外部資源到對象中,控制反轉后,對象失去了對外部資源的控制,需要容器進行外部資源的注入。 - 誰控制誰?控制什么?為什么需要反轉?什么是反轉?什么是轉?
調用類對實現(xiàn)類選擇的控制
調用類需要的實現(xiàn)類由第三方控制,實現(xiàn)的代碼解耦
將實現(xiàn)類的選擇交給了容器來指定失去的了對實現(xiàn)類的控制,交給容器處理。
控制權的轉移 - Ioc==DI?
Ioc控制反轉突出 控制權的移交,一個是結果,只要是移交出去都是控制反轉。
DI是控制權的移交后進行使用,一個是過程,ioc的一種實現(xiàn)方式。
- 參與者都有誰?