白話解釋 控制反轉與依賴注入

2022-04-12 05:22:28 字數 955 閱讀 5107

每個行業都有自己的術語,軟體開發也不例外,有些術語如果僅看官方描述,會讓初學者如墜雲霧,比如」控制反轉與依賴注入「,所以本次話題就是大白話解釋什麼叫」控制反轉「,什麼叫」依賴注入「。他們之間又是什麼關係。

要想知道什麼是控制反轉,就要先知道什麼叫」正轉「。

假設我們在生活中,做任何事情都需要有2個事務的參與配合才能完成,比如:吃飯,描述的再具體點就是:我拿去筷子吃飯。這裡出現2個事物,」我「和」筷子「,我每次吃飯都需要1雙筷子。以物件導向的思維方式來說,「我「充當乙個入口類,在這個入口類中,我每次吃飯的時候都要買一雙一次性筷子(每一次使用都要new一次),在這樣的關係下,是」我「(即呼叫者)每次都要」主動「去買一次性筷子(另乙個類),我對筷子說你老老實實的過來我的手上,是我控制了筷子,這就是所謂的」控制正轉「。

那好,在這種控制正轉的關係下,放在現實生活當中,肯定是不現實的,而且人是懶惰的,他總會去創造出更加方便自己生活的想法,更確切的做法是,買一雙普通的筷子(非一次性),把他放在乙個容器當中(在spring中叫做ioc容器),你需要使用的時候就對容器說:ioc我想要用筷子(向容器發出請求),接著筷子就會」注入「到的手上,而在這個過程當中,你不再是控制方,反而演變成一名請求者(雖然本身還是呼叫者),依賴於容器給予你資源,控制權坐落到了容器身上,於是這就是人們俗稱的控制反轉

所謂依賴注入,還是這個例子,筷子不是由「我」這個入口類自己new出來的,而是由外部建立,然後傳遞給「我」的,比如可以通過構造方法來傳遞,也可以使用set方法來傳遞,這種方式就叫做依賴注入。說白了就是「我」吃飯要依賴筷子,而筷子不是「我」自己在類內部new出來的,而是由外部注入進來的。 

結論就是,所謂控制反轉與依賴注入其實描述的都是一回事,簡單的說就是要打破乙個類與另乙個類的緊耦合,只不過這2個術語描述的角度不同罷了。

以前寫的,補錄到這裡吧。

白話控制反轉(IOC)和依賴注入

ioc是inversion of control的縮寫,多數書籍翻譯成 控制反轉 還有些書籍翻譯成為 控制反向 或者 控制倒置 這概念太抽象了,首先從語言入手 理解這問題。控制反轉?誰控制誰,誰反轉。這根本沒有主語,這理解起來太抽象了。那麼變成,如下的關係。class a class b void ...

依賴注入 控制反轉

控制反轉 inversion of control,縮寫為ioc 是物件導向程式設計中的一種設計原則,可以用來減低計算機 之間的耦合度。其中最常見的方式叫做依賴注入 dependency injection,簡稱di 例子com.itcast.bean package com.itcast.bean...

依賴注入 控制反轉

依賴注入和控制反轉這2個概念差不多。架構整潔之道中的經典講解 普通 中,依賴方向和控制流方向是一致的,即如果函式a中呼叫函式b,那麼a依賴b,a控制b 而控制反轉的 是a和b都依賴c,a控制c,c控制b,在b和c之間的關係就是依賴控制反轉。結構化程式設計中的實現方式 c中有函式指標變數,把它的值賦值...