好處
- 將被依賴類的創建代碼從 依賴類中移出,不用顯式的寫new。
- 可以單獨維護 被依賴類的創建 過程。
方便該類的被共享。
如果該類初始化時,所需屬性很多,使用配置,遠比硬代碼編寫簡單。
比如DataSource配置 數據庫連接池時。
- 有多層依賴時,依賴關系的移出,事實上簡化了 依賴關系的查看和維護。
因為對每個類而言,只需要關心這個類的依賴。
以WEB項目為例,Controller層只需要關心Service層,Service層只需要關心Dao層。
有可能一個Service中使用了N多的Dao,來實現一個方法中的邏輯。
但是Controller只要引用這個Service,調用這個方法。
- 保證依賴不可變(final關鍵字)
- 保證依賴不為空(省去了我們對其檢查)
- 保證返回客戶端(調用)的代碼的時候是完全初始化的狀態
- 避免了循環依賴
- 提升了代碼的可復用性