控制反轉(IoC)與依賴注入(DI)

2021-09-14 01:10:32 字數 1115 閱讀 4379

關於spring控制反轉和依賴注入的文章、書籍很多,大家對其解釋也仁者見仁,這裡就不贅述了。下面我用通俗的例子和平實話語談一談自己的理解,希望對您有所幫助。

控制反轉(ioc/inverse of control): 應用程式(呼叫者)本身不負責依賴物件(被呼叫者)的建立和維護,而是由外部容器負責建立組裝。這樣控制權就由呼叫者轉移到了外部容器,控制權的轉移就是所謂的反轉。

依賴注入(di/dependence injection) : 容器將建立好的例項再注入呼叫者元件中,稱為依賴注入。

當某個角色(呼叫者)需要另乙個角色(被呼叫者)的協助時,在傳統的程式設計過程中,通常由呼叫者來建立被呼叫者的例項。如果建立被呼叫者例項的工作不再由呼叫者來完成,而是由外部容器完成,那麼該過程就稱為控制反轉;被呼叫者建立完成後,再注入呼叫者元件,因此稱為依賴注入。下面通過具體的示例對ioc和di進行說明:

//定義乙個介面

public inte***ce person
//第乙個實現類:

public class chinese implements person 

}

//第二個實現類:

public class american implements person 

}

注意這個類與傳統設計的區別:該類呼叫person子類的方法,如果是傳統設計,在本類中會建立物件例項,而在此類中並沒有建立物件例項。

public class user 

//使用setter注入

public void setp(person p)

//呼叫person子類重寫的sayhello方法,這裡的p並沒有例項化

public void function()

}

//外部容器

public class container 

}

//測試類:

public class test

}

//後台輸出「您好」

通過這個例子應該看懂了控制反轉和依賴注入了吧,這個與傳統設計相反。

控制反轉 IoC 與依賴注入 DI

最近幾天在 研究容器。發現有幾個理念需要理一下。細一看,又發現根本就是我們之前學過的東西。控制反轉 ioc 與依賴注入 di 這兩個概念有很多相同的內容,只不過是側重不相同。控制反轉 控制反轉 inversion of control,英文縮寫為ioc 是乙個重要的物件導向程式設計的法則來削減電腦程...

Ioc控制反轉與DI依賴注入

ioc inversion of control 將原先類產生的例項轉移到spring容器中 一 控制反 1.是一種設計思想 將設計好的物件交給容器控制,而不是傳統的在你的物件內部直接控制。2.主要控制了外部資源獲取 不只是物件,包括檔案等 3.傳統應用程式是由我們自己在物件中主動控制直接獲取依賴物...

控制反轉 IOC 和依賴注入 DI

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