IOC控制反轉 DI依賴注入詳解

2021-10-13 21:04:24 字數 1621 閱讀 3742

面向過程------

想象乙個過程----當我們的計算機技術還沒有這麼發達的時候,所有的**,就是建立在面向過程的。

這種**模式帶來乙個重要的問題,大專案的程式在寫的過程中,會有相當的**量是冗餘重複的。

不僅僅耗時耗力,一不小心就可能讓我們的整個工程出現坍塌事故。

物件導向------

我們在寫**的過程中,發現很多的**例項都是重複的,他們僅僅需要乙個引數例項化,這樣一樣的**就能起到不一樣的

作用,物件導向的程式設計出現了,一切皆可物件化,物件的例項化就是引數轉移的過程。

乙個問題?------

注意上述過程,當我們在寫乙個專案的時候,所有的**建立在類上,類與類之間有一定的依賴關係,倘若你的工程

中有個類跟其他的類一點關係也沒有,那你可以把這個類刪掉了,因為它很可能沒有被編譯。

現在有個問題,建立乙個專案需要不同的類之間的依賴關係,那麼當我們的這個專案有大的變動時,修改其中的乙個類

其他的類及**是否也需要改變?答案是肯定的,那麼在這個過程中,可想而知,重複的工作和沒必要的**以及重新搭建

的工程是怎麼樣的耗時耗力不討好的過程了。

耦合就是專案中類與類之間的依賴關係,就像學生和班級的關係,學生的班級改變後,對應的班主任也不一樣。

類與類之間的依賴越多越深,類與類之間的耦合越大。

介面是抽象的類,其所有的方法和屬性都是抽象的,我們在使用它的時候需要先例項化,建立乙個類來實現它。
通過以上描述,當前需要解決的問題是,有沒有一種模式,讓我們在進行類的使用的時候,

可以根據我們的需要進行不同的類之間的依賴關係的重新設定——即依賴注入。

當類和類之間的關係變得可控的時候,以上提出的問題都能夠被解決。

1.我們知道類和類之間之所以出現耦合的關係,是因為物件有自己特定的例項化的時間和過程,即班級的物件必定要在

學生物件之前出現。

基於此,如果我們能夠控制類建立物件的時間,就能夠偽實現類和類的耦合,為什麼是偽實現,因為即使控制了不同

的類建立物件的時間,但是類與類時間的書寫關係並沒有改變。

2.當所有的類都分離,借用第三方的容器,該容器擁有所有類的使用權,你只需要告訴它什麼時候建立哪個物件,並和哪個類

有什麼的關係,這樣我們就實現了類和類之間的無耦合關係。

上述兩個解決方案,顯然第二個更值得嘗試。

控制反轉ioc---將元件間的依賴關係在系統中抽離出來。

依賴注入di-----將元件間的依賴關係通過外部傳參的方式注入。

這裡我們提出兩個概念 ioc 和 di 來實現我們上面提到的第二個解決方案。首先程式設計的過程中進行ioc再根據我們的需要進行di

依賴前和解決問題後的模式如下所示:

可以參考這篇部落格

**層面來看ioc思想

控制反轉 IoC 與依賴注入 DI

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

控制反轉 IOC 和依賴注入 DI

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

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

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