依賴注入DI和 控制反轉IoC

2021-09-25 15:11:08 字數 1088 閱讀 4600

ioc - inversion of control 控制反轉

di - dependency injection 依賴注入

依賴注入和控制反轉說的實際上是同乙個東西,它們是一種設計模式,這種設計模式用來減少程式間的耦合

使用依賴注入,最重要的一點好處就是有效的分離了物件和它所需要的外部資源,使得它們鬆散耦合,有利於功能復用,更重要的是使得程式的整個體系結構變得非常靈活。
<?php 

/*** 沒有ioc/di的時候,常規的a類使用c類的示例

*//**

* class c

*/class c

}/**

* class a

*/class a

public function sayc() }

$a = new a();

$a->sayc();

當有了ioc/di的容器後,a類不再主動去建立c了,如下圖所示:

而是被動等待,等待ioc/di的容器獲取乙個c的例項,然後反向的注入到a類中,如下圖所示:

**示意:

<?php 

/** * 當有了ioc/di的容器後,a類依賴c例項注入的示例

*//**

* class c

*/class c

}/**

* class a

*/class a

public function sayc()

}$c = new c();

$a = new a();

$a->setc($c);

$a->sayc();

其實ioc/di對程式設計帶來的最大改變不是從**上,而是從思想上,發生了「主從換位」的變化。應用程式原本是老大,要獲取什麼資源都是主動出擊,但是在ioc/di思想中,應用程式就變成被動的了,被動的等待ioc/di容器來建立並注入它所需要的資源了。

控制反轉 IOC 和依賴注入 DI

控制反 從拆解字面上的意思,控制,是指物件建立 銷毀和管理 單例 的控制權,傳統程式設計上這個是交給呼叫方來控制。反轉,是指這些控制權優傳統上的呼叫方反轉為類似乙個容器的東西,統一調配和管理。依賴注入 依賴,其實就是耦合,這裡更多的是呼叫方和操作物件的耦合。注入是指,將某些耦合關係從乙個東西注入到另...

依賴注入(DI)和控制反轉(IOC)

依賴注入是用於實現控制反轉的最常見的方式之一。依賴注入的思想是 當乙個類對另乙個類有依賴時,不在該類內部對依賴的類進行例項化,而是有乙個配置好了的bean.xml檔案,告訴容器所依賴的類,在例項化該類時,容器自動注入乙個依賴的類的例項。傳統的方法就是在類中先例項化依賴的類,然後再呼叫該類中的方法。p...

IOC控制反轉和DI依賴注入區別

接觸這兩個概念後腦袋裡經常迷糊,而且許多資料中沒有說清楚,甚至混為一談。學習完spring後,才發現這兩個概念是不同時期對spring核心思想的描述,在這裡就不多說了,網上資料很多。在沒弄明白這兩個概念之前學spring總是似懂非懂,今天終於悟透了。簡單點明 ioc控制反 說的是建立物件例項的控制權...