在採用面向對象方法設計的系統中,都是通過底層的N個對象相互合作來實現系統的業務邏輯的。
底層的N個對象就像上圖中的齒輪,通過齒輪間的相互齧合來實現合作,協同工作,共同完成某項任務。如果一個齒輪出現問題,那麼就會對其他齒輪的正常工作帶來影響,這就是所謂的牽一髮而動全身。這種齧合關係跟對象與對象之間或者模塊與模塊之間的耦合關係很類似,如果其中一個對象或者模塊出現問題,都會導致整個系統出現問題。爲了降低對象之間的耦合度,於是就有專家提出了IoC理論,Spring就是一個應用了IoC理論的框架。
IoC(Inversion of Control)是控制反轉的意思,傳統的實現對象與對象之間的依賴關係,比如A對象想要調用B對象來實現某個業務邏輯,都是通過new一個B對象或者是使用一個已經存在的B對象,這樣控制權在A對象自己手裏,而應用了IoC理論的Spring框架則是將這種依賴關係交給第三方容器(IoC容器)來實現對象與對象之間的解耦,下圖就是應用了IoC理論以後對象與對象之間的依賴關係效果圖:
通過引入第三方容器(IoC容器)以後,A對象與B對象之間的直接依賴就變成了A和B共同依賴IoC容器,當A對象在需要用到B對象的時候,就由IoC容器來幫A對象創建一個B對象,而不是直接由A對象自己來創建,這樣對象的控制權就交給了第三方(IoC容器)了,IoC容器就變成了整個系統的核心了,IoC容器就跟“粘合劑”一樣,將整個系統中的所有對象“粘合”在一起,這也就是許多人把IoC容器稱作“粘合劑”的原因。
那麼爲什麼IoC容器又有個別名叫DI(Dependency Injection)依賴注入呢?實際上他們倆是從不同角度來看待同一個問題,就是指通過IoC容器,將依賴關係注入的方式,來實現對象之間的解耦。
使用IoC可以給我們帶來如下好處:
1.可維護性好,便於進行單元測試,每一個class都可以單獨測試,互不影響,這樣組件之間就可以實現低耦合或者無耦合。
2.便於大型項目的團隊分工,提高效率。
3.提高了模塊的複用性。
4.使模塊具有熱插拔性。
參考資料:http://blog.csdn.net/m13666368773/article/details/7802126
歡迎關注行者摩羅微信公衆號(xingzhemoluo),共同交流編程經驗,掃描下方二維碼即可;