【发布时间】:2010-11-15 22:37:02
【问题描述】:
在这个 AutoFac“最佳实践”页面 (http://code.google.com/p/autofac/wiki/BestPractices) 上,他们说:
不要传递容器 让组件访问容器,或将其存储在公共静态属性中,或使 Resolve() 等函数在全局“IoC”类上可用,都违背了使用依赖注入的目的。这样的设计与服务定位器模式有更多的共同点。 如果组件依赖于容器,请查看它们如何使用容器来检索服务,并将这些服务添加到组件的(依赖注入的)构造函数参数中。
那么让一个组件“动态”实例化另一个组件的更好方法是什么?他们的第二段没有涵盖“可能”需要创建的组件将取决于系统状态的情况。或者当组件A需要创建X个组件B时。
【问题讨论】:
标签: dependency-injection inversion-of-control