依赖注入最佳实践
回答
这里是最重要的点的名单(其中一些也出现在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