您能简单解释一下:什么主要区别于工厂设计模式的依赖注入?
此外:是否可以通过代码示例非常简单地演示差异?
由于
答案 0 :(得分:2)
工厂模式通常可用于重复创建具有可能复杂的实例化逻辑的对象实例。这样,您的类知道工厂的并请求实例。
依赖注入更进一步完全抽象实例化逻辑,就类而言。您需要关注的所有代码都是声明它们所需的依赖项,而不必担心它们的来源。
有关详细的深入指南,请参阅Inversion of Control Containers and the Dependency Injection pattern。
答案 1 :(得分:2)
使用Factory(或任何其他创建模式),调用者必须知道如何获取对象,并且必须在使用之前“明确地”请求它。
Car car = CarFactory.getCarByModel(LUXURY);
当使用DI时,传递所需对象的责任被委托给一些外部(主要是容器)实体,该实体知道如何创建对象(通过读取已定义的配置)并使其可以静默地对调用者使用。 / p>
Car car = getCar();
void setCar(Car car){..} // container sets the car fromoutside
答案 2 :(得分:0)
使用这两种模式实现了相同的目标,只需要使用工厂设计模式就可以编写代码,而使用DI,您可以使用现有的DI框架为您完成工作,并简单地进行依赖关系的配置。使用工厂模式,您必须为您的类编写工厂。