當前位置:編程學習大全網 - 編程語言 - 講講什麽是依賴註入以及給我們的項目開發帶來了什麽好處

講講什麽是依賴註入以及給我們的項目開發帶來了什麽好處

依賴註入(Dependency Injection)和控制反轉(Inversion of Control)是同壹個概念。具體含義是:當某個角色(可能是壹個Java實例,調用者)需要另壹個角色(另壹個Java實例,被調用者)的協助時,在 傳統的程序設計過程中,通常由調用者來創建被調用者的實例。但在Spring裏,創建被調用者的工作不再由調用者來完成,因此稱為控制反轉;創建被調用者 實例的工作通常由Spring容器來完成,然後註入調用者,因此也稱為依賴註入。

不管是依賴註入,還是控制反轉,都說明Spring采用動態、靈活的方式來管理各種對象。對象與對象之間的具體實現互相透明。在理解依賴註入之前,看如下這個問題在各種社會形態裏如何解決:壹個人(Java實例,調用者)需要壹把斧子(Java實例,被調用者)。

(1)原始社會裏,幾乎沒有社會分工。需要斧子的人(調用者)只能自己去磨壹把斧子(被調用者)。對應的情形為:Java程序裏的調用者自己創建被調用者。

(2)進入工業社會,工廠出現。斧子不再由普通人完成,而在工廠裏被生產出來,此時需要斧子的人(調用者)找到工廠,購買斧子,無須關心斧子的制造過程。對應Java程序的簡單工廠的設計模式。

(3)進入“按需分配”社會,需要斧子的人不需要找到工廠,坐在家裏發出壹個簡單指令:需要斧子。斧子就自然出現在他面前。對應Spring的依賴註入。

第壹種情況下,Java實例的調用者創建被調用的Java實例,必然要求被調用的Java類出現在調用者的代碼裏。無法實現二者之間的松耦合。

第二種情況下,調用者無須關心被調用者具體實現過程,只需要找到符合某種標準(接口)的實例,即可使用。此時調用的代碼面向接口編程,可以讓調用者和被調用者解耦,這也是工廠模式大量使用的原因。但調用者需要自己定位工廠,調用者與特定工廠耦合在壹起。

第三種情況下,調用者無須自己定位工廠,程序運行到需要被調用者時,系統自動提供被調用者實例。事實上,調用者和被調用者都處於Spring的管理下,二者之間的依賴關系由Spring提供。

  • 上一篇:現在學什麽專業好阿?
  • 下一篇:世界上使用最廣的語言是什麽語
  • copyright 2024編程學習大全網