软件设计模式—依赖注入
原文作者:懸壺醉世
原文地址:為什么我們需要依賴注入?
以前剛入行的時候一直很困惑,spring這個東西為什么把new一個對象的事情搞這么麻煩。后來慢慢入行這才了解了依賴注入是怎么一回事。本文決定非常淺顯的給大家聊聊依賴注入。我們的疑問是從Spring框架的xml開始的,這個xml被人詬病已久。其實呢依賴注入并非值得是用xml來new對象,依賴注入其實是一種思想,一種方法。而xml是它最菜的實現方式。。由淺入深慢慢來~~~~~~
第一步:為什么我們不能new對象?
隨時隨地new對象會引發一個問題,就是你new的實例會滿天飛。這樣一來你每一個實體進行擴充,修改,放棄的時候你就需要滿世界的找對象,一個一個改過來。例如:
collection map=new HashMap();有一天老大跟你說 HashMap不太行,全部換成新版的XXXXMap吧~~~你是不是需要全部一起換?所以這時候我們需要通過工廠模式來管理對象了。代碼如下:
collection map=MapFactory.createMap();這樣一來,我們隨時想替換掉HashMap就變得非常簡單了。
第二步:為什么我們不用工廠模式,而要專門做依賴注入框架。
當你只需要一個Map對象的時候很簡單。這沒錯~~~但是你需要創建的對象是一個多層次的對象呢?這樣問題就來了。例如,我要一輛車,那么就需要輪胎,我需要一個輪胎,那么就需要一個輪轂,若干螺絲,外胎,內胎,剎車……那么問題就來了。我應該做的是造車的時候再種橡膠樹么?這樣不對啊。我們應該做的是,在造車的時候,就發現已經有了生產完全的輪胎,直接調用輪胎裝上去就行了。至于輪胎里面需要什么東西,我不是重新做,而是直接調用現成的東西。這就是依賴注入。他代表的意義是:我不是先有車才去生產輪胎,而是已經有了輪胎才去生產車。這樣的劃分也代表的是一種思維方式,讓你的所有對象之間從思維與實現上解耦。這樣一來我的對象才是真正的獨立。所以解決你肯定遇到了的一個困惑:XML是一個非常累人的依賴注入實現方式而已,依賴注入其實還有其他實現,例如注解的方式。
第三步,依賴注入是一個好的思想,但是優勢在什么地方呢?解耦在什么地方呢?
繼續沿用上面的造車的例子。造車,調用車輪,調用外胎,調用橡膠。我剛造好一輛車,現在我們需要把車輪換成另外一個車輪。這樣一來,依賴注入的優勢就體現出來了,因為你只需要替換掉調用車輪的車輪對象即可。
三步下來,依賴注入的優勢就出來了。特別是當團隊合作的時候,他完全可以不用理解造車輪的細節就可以完好的換掉車輪對象。現在你大概了解了什么叫做依賴注入,在spring實戰中,作者也強烈推薦用注解方式來操作spring。希望本文能幫助到各位。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的软件设计模式—依赖注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring框架—体系结构
- 下一篇: 软件设计模式—控制反转