依賴注入和控制反轉

來源:互聯網
上載者:User

標籤:

前言

    還是從上次機房合作驗收說起,其中一個特別厲害的師姐提到了依賴注入和控制反轉,剛剛聽到這個的時候,感覺很熟悉,就是不知道在哪裡看到過,想起了米老師說的那句話,“不怕不知道,就怕不知道”,不怕不知道它,就怕遇到了不知道它是什麼意思,我可是上升到了不知道的第二個階段。廢話不說了,直奔主題吧。

內容

    記得在哪見過,就去找設計模式了,看到了依賴倒轉(倒置)原則,瞬間就想起了一句經久不衰的話:高層模組不應該依賴底層模組,兩個應該都依賴抽象;抽象不應該依賴細節,細節應該依賴抽象。

  • 例子:電腦PC的主板不依賴CPU\、硬碟、記憶體條等。PC主板只負責提供對外擴充的介面,PC主板不依賴具體實現。

1、可是這個原則和師姐說的又有什麼關係呢?


    依賴注入(Dependency Injection)簡稱:DI

    控制反轉(Inversion of Control)簡稱:IOC

    還拿主板說事吧!

    圖中主板負責抽象各個組件的資訊,給出介面,供其他組件依賴串連使用。這裡主板相當於高層模組,硬碟、CPU、記憶體條等相當於底層模組。高層模組定義了介面供底層模組使用。主板並不依賴哪個組件(CPU、硬碟等),只需定義好組件的參數給出介面即可。這裡體現了依賴倒置原則,它轉換了依賴,高層模組不依賴底層模組的實現,而底層模組依賴於高層模組定義的介面。


2、依賴注入和控制反轉


    需要的參與者有:對象、容器、資源

    依賴注入:對象依賴容器建立並注入它需要的外部資源;

    控制反轉:容器控制對象,由容器反向的向對象注入對象所需要的外部資源。



    

    利楠還是那麼會給例子,相當於容器就是VS環境,那些控制項就相當於資源,一開始對象上來想實現一個功能,然後就自己去建立執行個體注入資源。如果多個對象也想實現該一樣功能,那麼就會導致,建立了同一種但是多個該類資源,嚴重佔用記憶體,這就是依賴注入;控制反轉,相當於VS相當於容器,對象想實現一個功能,需要資源C,VS去工具箱去擷取相應的資源C(控制項),注入給對象。


    以上只是一些理論方面的解釋,後期會給大家一些代碼的體現。以上只是本菜鳥的一些見解,還望大家多多指正。

小結

1、有些東西還是得近距離瞭解,光遠看還是不夠的。


感謝您的寶貴時間···

依賴注入和控制反轉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.