依賴注入和控制反轉

2021-09-30 13:35:39 字數 837 閱讀 6097

當呼叫者需要被呼叫者的協助時,在傳統的程式設計過程中,通常由呼叫者來建立被呼叫者的例項,但在這裡,建立被呼叫者的工作不再由呼叫者來完成,而是將被呼叫者的建立移到呼叫者的外部,從而反轉被呼叫者的建立,消除了呼叫者對被呼叫者建立的控制,因此稱為控制反轉。

簡言之,控制反轉是將方法中的物件的控制,轉移到外部實現,避免引起類的修改。

依賴注入則是實現控制反轉的一種常用的手段。

//code1

class

indexcontroller()}

class

config

()class

db()

如code1所示,indexcontroller依賴config和db兩個類,indexcontroller是呼叫者,config和db是被呼叫者,indexcontroller在建構函式中建立了config和db的例項,這種依賴叫做「耦合」,減輕這種依賴的的過程就是「解耦」。日後如果config的建構函式發生了變化,則indexcontroller的建構函式也需要重寫,如果indexcontroller依賴多個類時,則任何乙個類發生變化時,indexcontroller的建構函式都需要重寫,因此我們需要降低這種依賴。

如code2所示,不是自己主動初始化依賴,而是通過外部傳入依賴的方式,我們稱之為依賴注入。

// code2

class indexcontroller()

}class config()

class db()

$controller

=new indexcontroller(new config(),new db());

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

依賴注入 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 誰依賴於誰 當然是某個物件依賴...