2

您能否简要解释一下:依赖注入与工厂设计模式的主要区别是什么?

另外:是否可以通过代码示例非常简单地演示差异?

谢谢

4

3 回答 3

2

工厂模式通常可用于重复创建具有可能复杂的实例化逻辑的对象实例。这样,您的类就知道工厂并请求实例。

就您的类而言,依赖注入更进一步完全抽象出实例化逻辑。您的所有代码需要关心的是声明它们需要的依赖项,而不用担心它们来自哪里。

如需深入了解,请参阅Inversion of Control Containers and the Dependency Injection pattern

于 2011-09-13T20:25:21.200 回答
2

使用工厂(或任何其他创建模式),调用者必须知道如何获取对象,并且必须在使用它之前“明确地”请求它。

Car car = CarFactory.getCarByModel(LUXURY);

而在使用 DI 时,传递所需对象的责任被委托给了一些外部(主要是容器)实体,该实体知道如何创建对象(通过读取已经定义的配置)并以静默方式将其提供给调用者。

Car car = getCar();
void setCar(Car car){..} // container sets the car fromoutside
于 2011-09-13T20:28:44.350 回答
1

两种模式都实现了相同的目标,只是使用工厂设计模式您必须编写代码,而使用 DI 您使用现有的 DI 框架为您完成工作并简单地配置依赖项。使用工厂模式,您必须为您的类编写工厂。

于 2011-09-13T20:22:57.613 回答