【发布时间】:2011-09-10 17:39:18
【问题描述】:
我试图弄清楚在使用依赖注入时如何创建多个对象。据我了解,标准方法是注入一个工厂,然后用于创建对象。我挣扎的部分是工厂如何创建对象。到目前为止,我看到了两种可能的解决方案:
Factory 只是使用 new() 来创建对象。
- 难道 DI 不应该让我摆脱对非值对象使用 new 的束缚吗?
- 如果要创建的对象具有可由 IoC 解决的依赖关系,会发生什么情况?
使用容器作为服务定位器
- 以引入反模式为代价解决了仅更新对象的问题,或者如果工厂内限制使用 serviclocater,则它不再是反模式?
感觉就像我可以在一个糟糕的解决方案和一个糟糕的解决方案之间徘徊。是我遗漏了什么还是我理解错了什么?
编辑 目前我根本没有使用 Ioc,而是在考虑 Ninject。尽管 Autofac DelegateFactories 听起来很有希望。
【问题讨论】:
-
你的工厂可以从容器中解析依赖。您没有指定容器。但是,我可以告诉你 Autofac 对这种情况有明确的支持。见code.google.com/p/autofac/wiki/DelegateFactories
-
你用的是什么容器?
-
我没有使用 Ninject 的经验,因此无法对此发表评论。 Autofac 是一个非常好的容器。
标签: dependency-injection inversion-of-control ioc-container