依賴注入最佳實踐
回答
這裏是最重要的點的名單(其中一些也出現在OP):
- 代碼應該是不知道哪些DI容器(如果有的話)用於
- 撰寫在應用程序的根整個應用程序(構圖根)
- 青睞構造器注入
我不能說,我同意你的觀點關於Singleton與瞬態對象。 DI的重點在於外部機制(如DI容器)決定任何給定依賴關係的生命週期,而不是其他人,因此您需要擁有DI容器管理的所有依賴關係。
Hi Mark,請參閱此處的討論(http://groups.google.com/group/ninject/browse_thread/thread/41ec03527da9f0f8),瞭解Ninject在應用程序中的性能。和你一樣,我認爲應該在任何地方都使用DI容器,但DI容器的開銷是這樣的,即創建大量的瞬態對象可能是突兀的。您的建議對於Web應用程序來說可能很好,但對其他領域來說則不是那麼重要 – 2009-10-29 17:57:55
我撇開了這個討論,但我想我贊同Nate那裏。應該使用DI來解決和注入依賴關係,但是如果通過DI容器創建數十萬個對象,那麼總體設計會出現問題。這絕不是DI的意圖。我可以在列表中添加另一個項目符號:「支持將穩定依賴關係中的易失性依賴關係解耦」,但這更像是一個通用設計建議,而不是特定的DI事務。 – 2009-10-29 19:54:21
我同意關於瞬態對象 - 大多數使用DI的應用程序會創建大量的瞬態對象。一些容器(Unity和即將Autofac 2)默認爲瞬態而不是Singleton。 我不認爲「更喜歡單身人士」可能被視爲最佳實踐 - 它似乎更像是對特定場景中特定容器性能的評論。 – 2009-10-30 04:38:03
使用DI容器長住辛格爾頓只對象,請使用工廠(或其他方式)進行短暫的臨時對象)
但不要使用DI注入工廠到那裏需要。
- 1. 依賴注入ViewModelBase - 最佳實踐
- 2. 最佳實踐的依賴注入
- 3. AngularJS如何實現多態/依賴注入(最佳實踐)
- 4. iOS依賴注入框架(最佳實踐)
- 5. Symfony2中的依賴注入最佳實踐
- 6. 依賴注入和緩存類最佳實踐
- 7. Symfony2中依賴注入的最佳實踐
- 8. 何時使用Pub/Sub與依賴注入的最佳實踐
- 9. 依賴注入 - 完全解耦組件的最佳實踐?
- 10. 依賴注入最佳實踐和反模式
- 11. C++依賴管理最佳實踐
- 12. 循環依賴最佳實踐
- 13. #defines依賴關係的最佳實踐?
- 14. 安裝依賴項的最佳實踐?
- 15. 插件依賴性最佳實踐
- 16. 將彈簧依賴關係注入到Domain對象的最佳實踐中?
- 17. 使用TypeScript在AngularJS服務中依賴注入的最佳實踐
- 18. 依賴注入(DI)的最佳途徑
- 19. DLL注入的最佳實踐?
- 20. 用Vaadin和Spring Boot實現依賴注入的好實踐
- 21. 靜態庫依賴關係的最佳實踐
- 22. 在單獨的提交中添加依賴項? (最佳實踐)
- 23. Rails:模型依賴類位置的最佳實踐?
- 24. 包含Spring項目依賴關係的最佳實踐
- 25. 行家循環依賴+繼承最佳實踐
- 26. 在JavaScript最佳實踐中組織圖書館依賴關係
- 27. JAR依賴性部署的最佳實踐
- 28. MEF和可選的插件依賴關係 - 最佳實踐?
- 29. Maven和AppServer依賴管理最佳實踐
- 30. 最佳實踐:在Linux上部署依賴關係
什麼是內核?是一個Ninject特定的概念(在其他地方還沒有見過)? – zvolkov 2009-11-03 02:08:45
此外,二傳手與構造器注射是一種宗教論點,因此應該避免。 – zvolkov 2009-11-03 02:11:54