niv*_*lam 16 dependency-injection ioc-container inversion-of-control
我试图了解何时应该使用容器而不是手动注入依赖项.如果我有一个使用1-2接口的应用程序,并且每个接口只有1-2个具体实现,我会倾向于自己处理.
如果我有一个使用2-3个接口的小应用程序,每个接口有2-3个具体实现,我应该使用一个完整的容器吗?像这样简单的东西就足够了吗?
基本上我试图理解何时适合手动处理这些依赖关系,什么时候(或者如果)我应该使用像上面那样简单的东西,何时使用像Ninject,Windsor等的IOC容器....它可能不会适合在这样的事情上加上一个数字,但我怎么能告诉它是时候使用IOC容器了?
Mar*_*ann 14
在这里要实现的重要一点是,您可以(并且应该)以对DI友好但与容器无关的方式编写代码.
这意味着您应该始终将依赖项的组合推送到不再可能推迟它的位置.这称为组合根,通常放在应用程序的入口点附近.
如果以这种方式设计应用程序,您选择的DI容器(或无DI容器)将围绕应用程序中的单个位置进行,您可以快速更改策略.
如果您只有几个依赖项,您可以选择使用穷人的DI,或者您可以选择使用完整的DI容器.以这种方式使用,您将不依赖于任何特定的DI容器,因此在可维护性方面,选择变得不那么重要.
DI容器可帮助您管理完整性,包括对象生命周期.像这里描述的那样使用,它不会做任何你不能写的东西,但它做得更好,更简洁.因此,我何时开始使用DI容器的门槛非常低.
一旦我遇到一些依赖项,我就会开始使用DI容器.无论如何,大多数都很容易上手.
更新:我2012年11月对该问题的回答.
| 归档时间: |
|
| 查看次数: |
2748 次 |
| 最近记录: |