依賴注入(di)和控制反轉(ioc)基本是乙個意思,因為說起來誰都離不開誰。
簡單來說,a依賴b,但a不控制b的建立和銷毀,僅使用b,那麼b的控制權交給a之外處理,這叫控制反轉(ioc),而a要依賴b,必然要使用b的instance,那麼
通過a的介面,把b傳入;
通過a的構造,把b傳入;
通過設定a的屬性,把b傳入;
這個過程叫依賴注入(di)。
那麼什麼是ioc container?
隨著di的頻繁使用,要實現ioc,會有很多重複**,甚至隨著技術的發展,有更多新的實現方法和方案,那麼有人就把這些實現ioc的**打包成元件或框架,來避免人們重複造輪子。
所以實現ioc的元件或者框架,我們可以叫它ioc container。
只講原理,不講過程。
大多數物件導向程式設計語言,在呼叫乙個類的時候,先要例項化這個類,生成乙個物件。
如果你在寫乙個類,過程中要呼叫到很多其它類,甚至這裡的其它類,也要「依賴」於更多其它的類,那麼可以想象,你要進行多少次例項化。
這就是「依賴」的意思。
依賴注入,全稱是「依賴注入到容器」, 容器(ioc容器)是乙個設計模式,它也是個物件,你把某個類(不管有多少依賴關係)放入這個容器中,可以「解析」出這個類的例項。
所以依賴注入就是把有依賴關係的類放入容器(ioc容器)中,然後解析出這個類的例項。僅此而已。
依賴注入和控制反轉
還是從上次機房合作驗收說起,其中乙個特別厲害的師姐提到了依賴注入和控制反轉,剛剛聽到這個的時候,感覺很熟悉,就是不知道在 看到過,想起了公尺老師說的那句話,不怕不知道,就怕不知道 不怕不知道它,就怕遇到了不知道它是什麼意思,我可是上公升到了不知道的第二個階段。廢話不說了,直奔主題吧。記得在哪見過,就...
依賴注入和控制反轉
本文 ioc inversion of control 控制反轉 di dependency injection 依賴注入 要想理解上面兩個概念,就必須搞清楚如下問題 1 參與者有誰 一般有三方參與者,乙個是某個物件 乙個是ioc di容器 另乙個是物件的外部資源。2 誰依賴於誰 當然是某個物件依賴...
依賴注入和控制反轉
當呼叫者需要被呼叫者的協助時,在傳統的程式設計過程中,通常由呼叫者來建立被呼叫者的例項,但在這裡,建立被呼叫者的工作不再由呼叫者來完成,而是將被呼叫者的建立移到呼叫者的外部,從而反轉被呼叫者的建立,消除了呼叫者對被呼叫者建立的控制,因此稱為控制反轉。簡言之,控制反轉是將方法中的物件的控制,轉移到外部...