還是從上次機房合作驗收說起,其中乙個特別厲害的師姐提到了依賴注入和控制反轉,剛剛聽到這個的時候,感覺很熟悉,就是不知道在**看到過,想起了公尺老師說的那句話,「不怕不知道,就怕不知道」,不怕不知道它,就怕遇到了不知道它是什麼意思,我可是上公升到了不知道的第二個階段。廢話不說了,直奔主題吧。
記得在哪見過,就去找設計模式了,看到了依賴倒轉(倒置)原則,瞬間就想起了一句經久不衰的話:高層模組不應該依賴底層模組,兩個應該都依賴抽象;抽象不應該依賴細節,細節應該依賴抽象。
1、可是這個原則和師姐說的又有什麼關係呢?
依賴注入(dependency injection)簡稱:di
控制反轉(inversion of control)簡稱:ioc
還拿主機板說事吧!
圖中主機板負責抽象各個部件的資訊,給出介面,供其他部件依賴連線使用。這裡主機板相當於高層模組,硬碟、cpu、記憶體條等相當於底層模組。高層模組定義了介面供底層模組使用。主機板並不依賴哪個部件(cpu、硬碟等),只需定義好部件的引數給出介面即可。這裡體現了依賴倒置原則,它轉換了依賴,高層模組不依賴底層模組的實現,而底層模組依賴於高層模組定義的介面。
2、依賴注入和控制反轉
需要的參與者有:物件、容器、資源
依賴注入:物件依賴容器建立並注入它需要的外部資源;
控制反**容器控制物件,由容器反向的向物件注入物件所需要的外部資源。
利楠還是那麼會給例子,相當於容器就是vs環境,那些控制項就相當於資源,一開始物件上來想實現乙個功能,然後就自己去建立例項注入資源。如果多個物件也想實現該一樣功能,那麼就會導致,建立了同一種但是多個該類資源,嚴重占用記憶體,這就是依賴注入;控制反轉,相當於vs相當於容器,物件想實現乙個功能,需要資源c,vs去工具箱去獲取相應的資源c(控制項),注入給物件。
以上只是一些理論方面的解釋,後期會給大家一些**的體現。以上只是本菜鳥的一些見解,還望大家多多指正。
1、有些東西還是得近距離了解,光遠看還是不夠的。
控制反轉 依賴注入和控制反轉
依賴注入 di 和控制反轉 ioc 基本是乙個意思,因為說起來誰都離不開誰。簡單來說,a依賴b,但a不控制b的建立和銷毀,僅使用b,那麼b的控制權交給a之外處理,這叫控制反轉 ioc 而a要依賴b,必然要使用b的instance,那麼 通過a的介面,把b傳入 通過a的構造,把b傳入 通過設定a的屬性...
依賴注入和控制反轉
本文 ioc inversion of control 控制反轉 di dependency injection 依賴注入 要想理解上面兩個概念,就必須搞清楚如下問題 1 參與者有誰 一般有三方參與者,乙個是某個物件 乙個是ioc di容器 另乙個是物件的外部資源。2 誰依賴於誰 當然是某個物件依賴...
依賴注入和控制反轉
當呼叫者需要被呼叫者的協助時,在傳統的程式設計過程中,通常由呼叫者來建立被呼叫者的例項,但在這裡,建立被呼叫者的工作不再由呼叫者來完成,而是將被呼叫者的建立移到呼叫者的外部,從而反轉被呼叫者的建立,消除了呼叫者對被呼叫者建立的控制,因此稱為控制反轉。簡言之,控制反轉是將方法中的物件的控制,轉移到外部...