依赖注入 – 依赖注入最佳实践

我在我的代码中使用依赖注入(使用 Ninject)并且认为我做得很好,直到我遇到由于误解DI容器适合代码的地方而导致的性能问题.似乎有很多关于如何使用DI框架的信息,但没有太多关于不使用它们的地方或如何最好地使用它们(至少我能找到)

我想我会写出我认为最好的做法,看看其他人是否同意我以及人们可以提出的其他最佳做法.

>每个应用程序或AppDomain使用一个内核
>仅将DI容器用于长寿命Singleton对象,将工厂(或其他方法)用于短期瞬态对象)
>首选构造函数注入属性或场注入
>请求对象,不要构建它们
>其他??指向好博客文章/文章

这是最重要的一个简短列表(其中一些也出现在OP中):

>代码应该不知道使用哪个DI容器(如果有的话)
>在应用程序的根目录中组合整个应用程序(组合根)
>偏向构造函数注入

我不能说我同意你关于Singleton vs. Transient对象的观点. DI的重点是外部机制(例如DI容器)确定任何给定依赖关系的生命周期,而不是其他人,因此您需要让所有依赖关系由DI容器管理.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...