【问题标题】:Is IOC design pattern is independent of Factory design pattern?IOC 设计模式是否独立于工厂设计模式?
【发布时间】:2012-09-03 12:08:37
【问题描述】:

我在某处读到,IOC 与工厂模式不同。由于工厂设计模式更具侵入性,而依赖注入则不然。

有人能详细说明一下吗?

【问题讨论】:

    标签: spring design-patterns dependency-injection inversion-of-control


    【解决方案1】:

    是的,IoC 和 Factory 是两个不同的东西。 IoC 实际上是一个更通用的术语,很多东西都可以称为 IoC,因此它有助于进一步完善您所指的内容。例如,从技术上讲,任何回调或事件都被视为 IoC 的实现。然而,大多数人在谈论 IoC 时指的是依赖注入。

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

    您可能想到的是依赖注入容器,例如 Unity、Windows 或 Ninject。 DI 容器是一种被美化的抽象泛型工厂,但它的功能远不止这些,包括对象生命周期管理、条件绑定等......

    将模式(IoC 或 DI)与实现(工厂、DI 容器、Poor mans DI 等)分开很重要,即使实现本身也可能是模式。​​

    【讨论】:

      【解决方案2】:

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

      这就是为什么你在容器中注册东西时总是指定一个生命周期(或者只使用默认生命周期)

      但是,由于容器会为您创建对象,因此它还可以提供依赖注入作为额外功能。所以这真的是一个奖金。

      另一方面,工厂模式应该总是创建一个新对象。工厂模式的目的只是为您创建正确的实现。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 2011-11-20
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多