物件導向設計(ood)有助於我們開發出高效能、易擴充套件以及易復用的程式。其中,ood有乙個重要的思想那就是依賴倒置原則(dip),並由此引申出ioc、di以及ioc容器等概念。
依賴倒置原則(dip): 一種軟體架構設計的原則(抽象概念)。
控制反轉(ioc):一種反轉流、依賴和介面的方式(dip的具體實現方式)。
依賴注入(di):ioc的一種實現方式,用來反轉依賴(ioc的具體實現方式)。
ioc容器 :依賴注入的框架,用來對映依賴,管理物件建立和生存週期(di框架)。
依賴倒置原則(dip):高層模組不依賴於底層模組的實現,而低層模組依賴於高層模組定義的介面。
dip是一種軟體設計原則,它僅僅告訴你兩個模組之間應該如何依賴,但是它並沒有告訴如何做。ioc則是一種軟體設計模式,它告訴你應該如何做,來解除相互依賴模組的耦合。控制反轉(ioc),它為相互依賴的元件提供抽象,將依賴(低層模組)物件的獲得交給第三方(系統)來控制,即依賴物件不在被依賴模組的類中直接通過new來獲取。
控制反轉(ioc)一種重要的方式,就是將依賴的物件的建立和繫結轉移到被依賴物件類的外部來實現。
依賴注入(di),它提供一種機制,將被依賴(低層模組)物件的引用傳遞給依賴(高層模組)物件。
方法一 建構函式注入:在需要依賴的物件的建構函式中增加乙個介面引數,在例項化需要依賴的物件時,將被依賴物件傳入。
方法二 方法注入:同上,通過方法實現。
上面所有的例子中,我們都是通過手動的方式來建立被依賴物件,並將其傳遞給依賴模組
對於大型專案來說,相互依賴的元件比較多。如果還用手動的方式,自己來建立和注入依賴的話,顯然效率很低,而且往往還會出現不可控的場面。正因如此,ioc容器誕生了。ioc容器實際上是乙個di框架,它能簡化我們的工作量。它包含以下幾個功能:
C 依賴注入 setter注入
在文章 c 依賴注入 初步概念了解 中,簡單的介紹了依賴注入常用三種方式 setter注入,建構函式注入,介面注入。在此文章中,使用 具化對setter注入的解釋。setter注入 就是在類a裡面定義乙個c介面的屬性d,在a的上下文通過b例項化乙個物件,然後將這個物件賦值給屬性d。主要就是set 與...
spring 依賴注入 Spring依賴注入
依賴注入 dependency injection,簡稱di 與控制反轉 ioc 的含義相同控制反 在使用spring框架之後,物件的例項不再由呼叫者來建立,而是由spring容器來建立,spring容器會負責控制程式之間的關係,而不是由呼叫者的程式 直接控制,這樣控制權由應用程式轉移到了sprin...
ioc(依賴 依賴倒置 依賴注入)
先看一下這個大佬的部落格 我只是畫個圖 1.依賴 這個很不友好,要換別的player或者meidafile要動operation 2.依賴倒置 這個好很多了,加了兩個介面,要換別的player或者meidafile,不用動operation 3.ioc 控制反轉 控制權是我們使用者自己,如果是spr...