IoC 控制反轉

2021-09-29 13:42:46 字數 1410 閱讀 8203

什麼是ioc呢?

控制反轉(inversion of control, ioc)是物件導向程式設計中的一種設計原則,由於理論和實踐成熟的相對較晚,所以並沒有包含在gof中。

早在2023年,martin fowler提出「哪些方面的控制被反轉了?」這個問題。他總結出的結果是依賴物件的獲得被反轉了,因為大多數應用程式都是由許多類通過彼此協作來實現業務邏輯,這使得每個物件都需要獲取與其合作物件(也就是它所依賴的物件)的引用。如果這個獲取過程靠自身實現,將導致**高度耦合並且難以維護和除錯。

那麼有什麼辦法即可降低**的耦合度呢?

例如:客戶端類需要獲取使用者類

當客戶端類需要獲取使用者類時,可以直接從ioc容器中獲取。ioc容器可以用來建立使用者類,也可以用於檢視使用者類是否有依賴物件需要注入,當有使用者資訊類需要注入時,首先會建立使用者資訊類,然後將其注入到使用者類上。最終,都由容器來管理這些物件的生命週期。

什麼是ioc容器呢?

對於大型專案而言,相互依賴的元件很多。如果使用手工方式自己建立和注入依賴的話,效率極低而且經常會出現不可控的場面。因此ioc容器誕生了,ioc容器實際上是乙個依賴注入(di)框架,它能簡化工作量,因為它能:

簡單來說,ioc容器就是具有依賴注入(di)功能的容器,主要負責例項化、定位、配置應用程中的物件以及建立這些物件之間的依賴。應用程式無需在**中new相關物件,而是由ioc容器進行組裝。

ioc容器提供最大便利之處在於更加容易實現可插拔可替換的元件,這也使介面驅動開發所帶來的優勢,根據介面可以提供更加靈活的子類實現,增強**的健壯性和穩定性。

ioc容器管理的元件一般使是實現了某些介面的類,這些元件又會使用其它某些介面的元件,元件是不需要知道介面的具體實現,因為這一點,元件之間的替換才會如此容易。容器的任務就是幫助我們建立元件具體的例項,並管理它們的依賴關係,以及將所需的具體依賴傳遞給元件。

ioc有什麼優缺點呢?

控制反轉是將物件控制權由物件本身轉向容器,容器管理著元件的依賴關係並提供對應的依賴物件。優點在於:

雖然ioc能給開發帶來很大的好處,但也並非沒有缺點:

ioc有那些實現策略呢?

ioc本身只是乙個概念,可以使用不同的方式實現,主要實現策略有兩種:

綜上所述,控制反轉可以用來減低計算機**之間的耦合度,常用的方式有依賴注入(dependency injection,di)和依賴查詢(dependency lookup)。通過控制反轉,物件在被建立時由乙個調控系統內所有物件的外界實體將其所依賴的物件的引用傳遞給它。也可以說,依賴被注入到物件中。

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,控制反轉 這是spring的核心,貫穿始終。所謂ioc,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。這是什麼意思呢,舉個簡單的例子,我們是如何找女朋友的?常見的情況是,我們到處去看 有長得漂亮身材又好的m...