標籤:
前言
還是從上次機房合作驗收說起,其中一個特別厲害的師姐提到了依賴注入和控制反轉,剛剛聽到這個的時候,感覺很熟悉,就是不知道在哪裡看到過,想起了米老師說的那句話,“不怕不知道,就怕不知道”,不怕不知道它,就怕遇到了不知道它是什麼意思,我可是上升到了不知道的第二個階段。廢話不說了,直奔主題吧。
內容
記得在哪見過,就去找設計模式了,看到了依賴倒轉(倒置)原則,瞬間就想起了一句經久不衰的話:高層模組不應該依賴底層模組,兩個應該都依賴抽象;抽象不應該依賴細節,細節應該依賴抽象。
- 例子:電腦PC的主板不依賴CPU\、硬碟、記憶體條等。PC主板只負責提供對外擴充的介面,PC主板不依賴具體實現。
1、可是這個原則和師姐說的又有什麼關係呢?
依賴注入(Dependency Injection)簡稱:DI
控制反轉(Inversion of Control)簡稱:IOC
還拿主板說事吧!
圖中主板負責抽象各個組件的資訊,給出介面,供其他組件依賴串連使用。這裡主板相當於高層模組,硬碟、CPU、記憶體條等相當於底層模組。高層模組定義了介面供底層模組使用。主板並不依賴哪個組件(CPU、硬碟等),只需定義好組件的參數給出介面即可。這裡體現了依賴倒置原則,它轉換了依賴,高層模組不依賴底層模組的實現,而底層模組依賴於高層模組定義的介面。
2、依賴注入和控制反轉
需要的參與者有:對象、容器、資源
依賴注入:對象依賴容器建立並注入它需要的外部資源;
控制反轉:容器控制對象,由容器反向的向對象注入對象所需要的外部資源。
利楠還是那麼會給例子,相當於容器就是VS環境,那些控制項就相當於資源,一開始對象上來想實現一個功能,然後就自己去建立執行個體注入資源。如果多個對象也想實現該一樣功能,那麼就會導致,建立了同一種但是多個該類資源,嚴重佔用記憶體,這就是依賴注入;控制反轉,相當於VS相當於容器,對象想實現一個功能,需要資源C,VS去工具箱去擷取相應的資源C(控制項),注入給對象。
以上只是一些理論方面的解釋,後期會給大家一些代碼的體現。以上只是本菜鳥的一些見解,還望大家多多指正。
小結
1、有些東西還是得近距離瞭解,光遠看還是不夠的。
感謝您的寶貴時間···
依賴注入和控制反轉