由淺入深理解 IOC 和 DI

2021-10-19 11:43:53 字數 1178 閱讀 7457

必須滿足此原則的**才能算作好的可維護的**。

可實現面向抽象程式設計的語法:

只有有了介面和抽象類的概念,多型性才能夠得到很好的支援。面向抽象程式設計的目的: 實現可維護的**,實現開閉原則。

從上面的**,可以看出以下幾點:

從以上**示例可得出以下幾點:

抽象的難點在於將new物件這個操作變得更加的抽象,而不是具體。

物件導向很多時候都是在做兩件事情: 例項化物件,呼叫方法(完成業務邏輯)。

由以上幾點可得出只有一段**不負責物件的例項化,即沒有new的出現,才能保持**的相對穩定,才能逐步實現ocp。(表象)

當然,物件例項化是不可能消除的,我們需要把物件例項化的過程轉移到其他的**片段裡,即把所有這些物件例項化的過程全部隔離到乙個地方,這樣子除了這個地方外的其他地方的**就會變得非常穩定(最簡單的方式為使用工廠模式,接下來的版本將演示這個過程)。

普通工廠模式

抽象工廠模式

使用簡單工廠模式把物件例項化的過程轉移到其他的**片段裡:

從以上例子可得出以下幾點:

所有的變化最終其實都要交給不同的物件去處理,當業務或使用者的輸入有了變化的時候,必須要建立不同的物件去響應這些變化。

從以上示例可得出以下幾點:

需要注意的是:現在這種工廠模式 + 反射的機制還不是iocdi

那麼,問題來了,現在已經實現了ocp,那麼還需要iocdi幹嘛?

到了此處,也可以隱隱約約地明白了iocdi到底是個什麼東西了,接下來再對這兩個東西解釋一下,以便理解地更加深刻。

抽象不應該依賴細節。

細節應該依賴抽象。

倒置: 正常編寫**時可能會new乙個物件,即依賴了乙個具體;而倒置就是不依賴具體而是反過來依賴乙個介面(抽象)。 di

依賴注入的原理

依賴注入在更高角度的意義

ioc

ioc 的奧義

ioc 舉例

關於IOC和DI討論

這是直接擷取的ppt的內容,我真不知道這樣來描述這所謂的2個概念需要讓看客們如何理解.同時我們可以去看看 martin fowler的 inversion of control containers and the dependency injection pattern 或者中文版本 在這個文章中...

什麼是IoC 和 DI

ioc 即控制反轉,di即依賴注入 簡單來說,ioc是一種思想,而di是這種思想的具體實現方式 要了解控制反轉 inversion of control 有必要先了解軟體設計的乙個重要思想 依賴倒置原則 dependency inversion principle 假設我們設計一輛汽車 先設計輪子,...

IOC和DI的聯絡

ioc是一種設計思想,而di是這種設計思想的乙個實現。理解ioc和di的關鍵是 誰依賴誰,為什麼需要依賴,誰注入誰,注入了什麼 誰依賴於誰 當然是應用程式依賴於ioc容器 為什麼需要依賴 應用程式需要ioc容器來提供物件需要的外部資源 誰注入誰 很明顯是ioc容器注入應用程式某個物件,應用程式依賴的...