必須滿足此原則的**才能算作好的可維護的**。
可實現面向抽象程式設計的語法:
只有有了介面和抽象類的概念,多型性才能夠得到很好的支援。面向抽象程式設計的目的: 實現可維護的**,實現開閉原則。
從上面的**,可以看出以下幾點:
從以上**示例可得出以下幾點:
抽象的難點在於將new
物件這個操作變得更加的抽象,而不是具體。
物件導向很多時候都是在做兩件事情: 例項化物件,呼叫方法(完成業務邏輯)。
由以上幾點可得出只有一段**不負責物件的例項化,即沒有new
的出現,才能保持**的相對穩定,才能逐步實現ocp
。(表象)
當然,物件例項化是不可能消除的,我們需要把物件例項化的過程轉移到其他的**片段裡,即把所有這些物件例項化的過程全部隔離到乙個地方,這樣子除了這個地方外的其他地方的**就會變得非常穩定(最簡單的方式為使用工廠模式,接下來的版本將演示這個過程)。
普通工廠模式
抽象工廠模式
使用簡單工廠模式把物件例項化的過程轉移到其他的**片段裡:
從以上例子可得出以下幾點:
所有的變化最終其實都要交給不同的物件去處理,當業務或使用者的輸入有了變化的時候,必須要建立不同的物件去響應這些變化。
從以上示例可得出以下幾點:
需要注意的是:現在這種工廠模式 + 反射的機制還不是ioc
和di
。
那麼,問題來了,現在已經實現了ocp
,那麼還需要ioc
和di
幹嘛?
到了此處,也可以隱隱約約地明白了ioc
和di
到底是個什麼東西了,接下來再對這兩個東西解釋一下,以便理解地更加深刻。
抽象不應該依賴細節。
細節應該依賴抽象。
倒置: 正常編寫**時可能會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容器注入應用程式某個物件,應用程式依賴的...