IOC 控制反轉

2021-09-22 18:57:35 字數 1400 閱讀 4942

想說說ioc(inversion of control,控制反轉)。這是spring的核心,貫穿始終。所謂ioc,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。
這是什麼意思呢,舉個簡單的例子,我們是如何找女朋友的?常見的情況是,我們到處去看**有長得漂亮身材又好的mm,然後打聽她們的興趣愛好、qq號、**號、ip號、iq號………,想辦法認識她們,投其所好送其所要,然後嘿嘿……這個過程是複雜深奧的,我們必須自己設計和面對每個環節。傳統的程式開發也是如此,在乙個物件中,如果要使用另外的物件,就必須得到它(自己new乙個,或者從jndi中查詢乙個),使用完之後還要將物件銷毀(比如connection等),物件始終會和其他的介面或類藕合起來。

那麼ioc是如何做的呢?有點像通過婚介找女朋友,在我和女朋友之間引入了乙個第三者:婚姻介紹所。婚介管理了很多男男**的資料,我可以向婚介提出乙個列表,告訴它我想找個什麼樣的女朋友,然後婚介就會按照我們的要求,提供乙個mm,我們只需要去和她談戀愛、結婚就行了。簡單明瞭,如果婚介給我們的人選不符合要求,我們就會丟擲異常。整個過程不再由我自己控制,而是有婚介這樣乙個類似容器的機構來控制。spring所倡導的開發方式就是如此,所有的類都會在spring容器中登記,告訴spring你是個什麼東西,你需要什麼東西,然後spring會在系統執行到適當的時候,把你要的東西主動給你,同時也把你交給其他需要你的東西。所有的類的建立、銷毀都由 spring來控制,也就是說控制物件生存週期的不再是引用它的物件,而是spring。對於某個具體的物件而言,以前是它控制其他物件,現在是所有物件都被spring控制,所以這叫控制反轉。

ioc的另外的名字叫做依賴注入(dependency injection),所謂的依賴注入,就是由ioc容器在執行期間,動態地將某種依賴關係注入到物件之中。所以,依賴注入(di)和控制反轉(ioc)是從不同的角度的描述的同一件事情,就是指通過引入ioc容器,利用依賴關係注入的方式,實現物件之間的解耦

耦合物件 解耦的過程

ioc在程式設計過程中不會對業務物件構成很強的侵入性,使用ioc之後,物件具有更好的可實行性,可重用性和可擴充套件性:

•降低元件之間的耦合度

•提高開發效率和產品質量

•統一標準,提高模組的復用性

•模組具有熱插拔特性

ioc通俗的理解如下:

•ioc控制反**說的是建立物件例項的控制權從**控制剝離到ioc容器控制,實際就是你在xml檔案控制,側重於原理

•di依賴注入:說的是建立物件例項時,為這個物件注入屬性值或其它物件例項,側重於實現

IoC控制反轉

首先假設有乙個需求,類business需要呼叫類dependency的方法f 1 按照日常的做法,得到下面的 類dependency public class dependency 類business public class business public void dosomething 2 對...

IOC 控制反轉

ioc是物件導向程式設計中的一種設計原則,可以借助 第三方 來減低計算機 之間的 耦合度 其中最常見的方式叫做依賴注入 dependency injection,簡稱di 還有一種方式叫 依賴查詢 dependency lookup 通過控制反轉,物件在被建立的時候,由乙個調控系統內所有物件的外界實...

IoC 控制反轉

什麼是ioc呢?控制反轉 inversion of control,ioc 是物件導向程式設計中的一種設計原則,由於理論和實踐成熟的相對較晚,所以並沒有包含在gof中。早在2004年,martin fowler提出 哪些方面的控制被反轉了?這個問題。他總結出的結果是依賴物件的獲得被反轉了,因為大多數...