回答

2

是的,IoC和Factory是两回事。 IoC实际上是一个更通用的术语,许多事物都被认为是IoC,所以它有助于进一步改进您所指的内容。例如,从技术上讲,任何回调或事件都被认为是IoC的实现。然而,大多数人在谈论IoC时意味着依赖注入。

您可以使用Factory实现控制反转,就像您可以使用依赖注入来实现它一样。

你可能想到的是一个依赖注入容器,如Unity,Windows或Ninject。 DI容器是一种美化的抽象通用工厂,但它的功能远不止于此,包括对象生命周期管理,条件绑定等...

将模式(IoC或DI)从(Factory,DI Container,Poor mans DI等),即使这些实现本身也可能是模式。

2

控制容器的反转不主要用于依赖注入。这是让容器控制对象的生命周期。因此inversion of control

这就是为什么你总是指定一辈子,当你在容器中注册的事情(或者只使用默认寿命)

然而,由于容器为您创建的对象,它也可以提供依赖注入作为额外特征。所以这真的是一个奖金。

另一方面,工厂模式应始终创建一个新的对象。工厂模式的目的仅仅是为您创建正确的实施。

+1

“控制反转”中的“控制”与对象的生命周期无关,请参阅http://en.wikipedia.org/wiki/Inversion_of_control – yegor256