我在某处读到,IOC与工厂模式不同。因为工厂设计模式更具侵入性,而As依赖注入则不是。
有没有人能详细说明一下?
发布于 2012-09-11 00:23:36
是的,IoC和工厂是两个不同的东西。IoC实际上是一个更通用的术语,许多东西都可以称为IoC,因此它有助于进一步细化您所指的内容。例如,从技术上讲,任何回调或事件都被认为是IoC的实现。然而,当大多数人谈到IoC时,他们指的是依赖注入。
您可以使用工厂来实现控制反转,就像您可以使用依赖注入来实现一样。
您可能正在考虑的是依赖注入容器,如Unity、Windows或Ninject。DI容器是一种美化的抽象泛型工厂,但它做的远不止这些,包括对象生存期管理、条件绑定等。
将模式(IoC或DI)与实现(工厂、DI容器、穷人DI等)分开是很重要的。即使实现本身也可能是模式。
发布于 2012-09-11 13:09:10
控制容器的反转主要不用于依赖注入。它是为了让容器控制对象的生命周期。因此才有了inversion of control。
这就是为什么当你在容器中注册东西时,你总是指定一个生命周期(或者仅仅使用默认的生命周期)
但是,由于容器为您创建了对象,因此它还可以提供依赖项注入作为额外的功能。所以这真的是一个额外的好处。
另一方面,工厂模式应该总是创建一个新的对象。工厂模式的目的很简单,就是为您创建正确的实现。
https://stackoverflow.com/questions/12354845
复制相似问题