IoC (控制反轉)是什么?兩張圖讓你搞清!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

簡單理解依賴注入(DI,Dependency injection)

依賴注入通過構造注入,函數調用或者屬性的設置來提供組件的依賴關系。就是這么簡單。

簡單理解控制反轉(IOC,(Inversion of Control)

IoC (控制反轉)是什么?兩張圖讓你搞清!

一開始我們代碼依賴關系可能是如圖這樣的,這里只舉例了3個對象和三個類的交叉依賴,我們代碼的依賴關系實際情況其實要復雜得多,腦補十多個對象的交叉,甚至還有橫向交叉。

現在問題來了,由于不可抗拒的原因,php版本升級,需求更改等等,要把α對象替換掉,把β對象刪掉,請問我們要改多少處代碼??

是時候拿出IOC了。

IoC (控制反轉)是什么?兩張圖讓你搞清!

瞬間清爽。

IOC容器在全局維持一個對象實例集合和類名集合,我們在寫某個類的時候把這個類依賴的對象注冊到容器里,調用這個類的時候再實例化拿出來。

這個就是IOC的思想,一個系統通過組織控制和對象的完全分離來實現”控制反轉”。對于依賴注入,這就意味著通過在系統的其他地方控制和實例化依賴對象,從而實現了解耦。

相關推薦:最新的五個laravel視頻教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享