什麼是IOC?
在Spring中最出名的兩個概念莫過于IOC和AOP了吧,隻要是學過Spring的人都知道,即使很出名,很多人也大概知道,那麼面試的時候你是否能夠說出來呢?相信很多人都對IOC和DI都大概了解,但是要你說的話就很模糊了
IOC是一種程式設計的思想(控制反轉),并不是什麼技術,用來管理我們程式中的對象和對象之間的依賴關系,如果不用IOC容器,那麼程式中所有對象的依賴關系都需要我們自己管理,所有依賴對象都有我們自己建立。我們來看看這種方式的不足。
- 所有對象都由我們自己建立,即面向實作類程式設計,造成程式耦合太高,不利于後期維護
- 随着程式的功能越發強大,類越多,依賴關系就越複雜,導緻後期基本沒人能夠徹底弄清楚對象之間的依賴關系
如果我們使用IOC容器就能輕而易舉的解決這些問題,對象的建立銷毀依賴關系都交給IOC去管理,我們隻需要關注業務本身即可,這樣做的話,我們的對象與對象之間就沒有直接的關系了,而是所有對象都依賴于IOC容器,如果我們要使用某個類的執行個體隻需去IOC容器中拿,IOC會幫我們管理、注入我們依賴的對象,解決了類與類之間的耦合,依賴關系也變得清晰可見
- 那麼到底是誰控制了誰?當然是IOC控制了我們程式中的對象,
- 控制了什麼?對象的建立與銷毀,,其實就是把對象的生命周期交給IOC了
- 反轉了什麼?即獲得依賴關系的過程,以前我們對象中需要依賴另一個對象,都需要我們自己建立,而使用IOC這一切都交給了IOC容器管理,IOC容器會自動幫我們管理對象以及注入對象中需要的依賴,
DI 依賴注入(IOC的别名)其實DI就是IOC的别名,其概念跟IOC一樣,隻是從不同的角度去描述,2004年Martin Fowler(馬丁福勒)提出IOC即為控制反轉那麼到底反轉了什麼?通過分析和論證最後得出結論,即反轉了獲得依賴關系的過程
說的可能不好,多多包含了,,,,,