控制反轉和依賴注入的簡單理解

2021-09-21 13:44:34 字數 872 閱讀 8149

好記性不如爛筆頭,有些不常提到的概念過兩年再回想就有些模糊了。在此簡單記錄一下。

首先要明確的是,控制反轉不是一種技術,而是一種思想。

直接從字面上理解:控制反轉就是「控制」被「反轉」了。(又是一句響亮的廢話~~) 下面單獨分析這兩個詞

控制:在程式設計中,我們想要實現乙個操作。例如,「程式設計師」想要「寫**」。常規流程應該是這樣:「程式設計師」這個類裡面先建立乙個 「電腦」物件,然後我可以任意控制「電腦」這個物件,最後用這個物件去「寫**」。 那麼,在這種實現方式中「程式設計師」是不是對「電腦」這個物件享有控制權?

反轉:在上述例子中,「程式設計師」對「電腦」這個物件享有控制權。這時愛折騰的人們發現乙個問題,以上這種編寫方式中「程式設計師」和 「電腦」這個物件耦合度太高了。這好辦,耦合度太高咱就解耦唄。實現起來就是:「程式設計師」不再手動建立「電腦」了。而是由外部容器來提供「電腦」這個物件。這樣的話是不是「程式設計師」對「電腦」這個物件的控制權就轉移了?本該持有的控制權被轉移了出去,這就是控制反轉。

跟控制反轉一樣,依賴注入也是一種思想。

依賴注入就是將依賴以「注入」的方式關聯起來。

怎麼理解呢?

ok,還是程式設計師的例子。「程式設計師」需要依賴於「電腦」這個物件。這時我們就需要通過一種方式將他們關聯起來。 比如我在「程式設計師」這個類中寫乙個「setcomputer(computer comp)」方法。這樣是不是我直接呼叫這個方法就可以傳入乙個「電腦」物件就可以將之和「程式設計師」關聯起來了!?對,這就是依賴注入的一種實現。

注意,這只是為了方便理解舉出的一種依賴注入的實現。依賴注入並非只有這一種實現。其他實現包括:構造方法注入,基於註解的注入等等。

理解php依賴注入和控制反轉

要想理解php依賴注入和控制反轉兩個概念,就必須搞清楚如下的問題 di dependency injection 依賴注入 ioc inversion of control 控制反轉 1 參與者都有誰?答 一般有三方參與者,乙個是某個物件 乙個是ioc di的容器 另乙個是某個物件的外部資源。又要名...

控制反轉 依賴注入和控制反轉

依賴注入 di 和控制反轉 ioc 基本是乙個意思,因為說起來誰都離不開誰。簡單來說,a依賴b,但a不控制b的建立和銷毀,僅使用b,那麼b的控制權交給a之外處理,這叫控制反轉 ioc 而a要依賴b,必然要使用b的instance,那麼 通過a的介面,把b傳入 通過a的構造,把b傳入 通過設定a的屬性...

依賴注入和控制反轉

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