在Kozmic的博客(2009年)上,他建议通用工厂从容器中检索物体。那么,这对我来说就像是一个伪服务定位器。所以我想问一下这里的专家的意见。Castle Windsor Generic Typed Factory
public interface IGenericFactory
{
T Create<T>();
}
我可以用它从Windsor容器中取物件吗?这种方法有什么缺点吗?
更新:
其实,我想用它来获取我不想创建多个工厂只有几个瞬间。所有这些场景都有一个工厂。
@ w0lf-使用通用工厂方法,我不必在我的代码中引用容器。我把它注册为一个打字工厂和繁荣。注入工厂并获得您想要的任何东西! (实际上,我想用它来获取我不想创建多个工厂的几个瞬变)。我想确定这是好事还是坏事? – user1178376 2012-04-18 21:45:51
@ user1178376该方法的问题在于它实际上是一个抽象服务定位器,可以轻松隐藏类的依赖关系。为了避免这种情况及其引起的维护问题,请尝试使用普通的构造函数注入和专门的工厂。 – GolfWolf 2012-04-19 07:02:20
另请注意Nicholas Blumhardt的评论。他非常清楚地描述了这一点:“它可以尝试创建字面上的任何东西 - 这会使维护和测试变得更加困难。” – Steven 2013-07-12 11:45:07