Spring 學習日記(2009/09/04) - DI的優越性

DI的優越性可以體現在以下幾個方面:

 

1)大大減少了"膠水"代碼.
"膠水"代碼指的是將系統各組件粘合在一起的代碼,常見的例子包括簡單的使用new操作符的對象實例化,複雜的基於JNDI查詢的對象創建, 也可以是遠程對象調用等.在使用DI的程序中,這些"膠水"代碼都可由配置文件來替代.

 

2)依賴組件的外部化.
在使用DI的程序中,開發者使用DI配置文件來控制系統組件的創建和實例化,我們只需改變DI配置文件, 無需重新編譯代碼就可以改變某個組件的初始化屬性.或者其具體的的實現(比如將基於MySQL的DAO替換爲基於ORACLE的DAO).

 

3)依賴組件的統一管理
在傳統的應用開發中,當需要使用某個組件時,我們就創建其實例,創建一個組件實例的代碼可能出現在程序中多個不同的地方,這就增加了代碼維護的難度. 通過使用DI,我們就有了一個統一和集中的環境來進行組件實例化的管理,從而減少了代碼量,也避免了代碼維護的問題.

 

4)提高系統可測試度
在進行系統單元測試時,我們經常需要使用樁模塊或是mock實現來驅動測試,使用DI可以非常簡便地實現樁模塊和實際實現之間的替換,從而減少了測試設計和實現的難度.

 

5)幫助優化系統設計
使用DI的系統的一個特定是大量使用Interface,在典型的基於植入的系統設計中,主要的組件必然是定義爲Interface,而其具體實現的選擇和組件之間的粘合則由DI容器來控制和管理.這使得開發者可以更多地專注於應用邏輯本身.

 

DI的缺點
DI的主要缺點在於對於不熟悉DI概念和技術的開發者而言,理解和掌握一個使用DI的系統比較困難,主要體現在不容易理清系統組件之間的粘合關係,也不容易確定某個組件的具體實現.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章