依賴註入優缺點分析
阿新 • • 發佈:2017-11-08
靈活性 記錄日誌 性能 for 松耦合 esql 方便 項目 ava
背景
項目開發要求:
1、增加程序重用
2、模塊功能單一
3、方便測試
4、需求變更,減少程序開發
實際應用場景
以兩種日誌記錄和數據庫使用兩種場景來分析
1、日誌記錄:有時需要調試分析,需要記錄日誌信息,這時可以采用輸出到控制臺、文件、數據庫、遠程服務器等;假設最初采用輸出到控制臺,直接在程序中實例化ILogger logger = new ConsoleLogger(),但有時又需要輸出到別的文件中,也許關閉日誌輸出,就需要更改程序,把ConsoleLogger改成FileLogger或者NoLogger,此時不斷的更改代碼,就顯得心裏不好了,如果采用依賴註入,就顯得特別舒暢。
2、數據庫操作:幾乎任何項目都離不開數據庫的使用,數據庫種類特別多:oracle、mysql、sqlserver、informix、postgresql... ...,數據庫語法也不盡相同,假如開始使用的是oracle,有一天改成了postgresql,這時采用依賴註入就顯得圓潤的多。
優點
- 傳統的代碼,每個對象負責管理與自己需要依賴的對象,導致如果需要切換依賴對象的實現類時,需要修改多處地方。同時,過度耦合也使得對象難以進行單元測試。
- 依賴註入把對象的創造交給外部去管理,很好的解決了代碼緊耦合(tight couple)的問題,是一種讓代碼實現松耦合(loose couple)的機制。
- 松耦合讓代碼更具靈活性,能更好地應對需求變動,以及方便單元測試。
缺點
在java語言中基本采用反射的方式來實現依賴註入,在一定程度會影響性能
依賴註入優缺點分析