use*_*642 4 constructor dependency-injection lazy-loading
我对依赖注入有点陌生,在工作时遇到了问题。
假设我有一个类“Employee”,它有一个方法,这个方法说“Promote”在最罕见的情况下也会有条件地被调用。
“Promote”方法使用“ValueAddition”对象,现在最好的做法是通过构造函数和用户全局对象注入该对象,还是应该解决方法本身的依赖关系?
推荐的最佳实践是什么?或者任何关于已解决依赖的生命周期的指针都会有帮助。
一般来说,您应该始终寻求注入依赖项,而不是使用服务位置(即直接从控制容器反转解决依赖项)。这里有一篇非常著名的博客文章,名为“服务定位器是一种反模式”,可以帮助阐明原因。
当您扩展时,您可能会遇到其他问题,这些问题似乎表明您需要使用服务位置。一般来说,您确实应该围绕这些问题进行设计,而不是退回到服务位置。
Promote()方法应该位于IEmployeePromoter您解决该问题的地方,并且它需要特殊的对象。然后,您将调用Promote(Employee)并传入员工,而不是更改Employee. 有时,您的控制反转容器将有一种方法来生成工厂(例如Func<T>或Lazy<T>)来帮助您推迟解析,直到您真正需要它为止。有大量关于依赖注入模式的文档和书籍。当不应用于特定框架(甚至语言)时,最好扩大搜索范围以查看一般模式和实践,并且它可以帮助您了解自己代码中的最佳实践。
| 归档时间: |
|
| 查看次数: |
841 次 |
| 最近记录: |