Nha*_*han 5 design-patterns dependency-injection
我正在调查依赖注入。我发现:大多数引用的依赖注入使用示例,我们也可以使用工厂模式来解决。
您能帮我比较 DI 和工厂模式之间的优缺点吗?我应该始终选择依赖注入而不是工厂模式吗?还是取决于指定的项目?
我怎么知道什么是最好的解决方案?对此的最佳实践是什么?
让我们看看它们之间的区别。
通过 DI,对象在外部创建并“注入”以供客户端对象使用。注入通常通过构造函数完成。
然而,在复杂的情况下,通常会注入 DI 容器来创建依赖项对象,包括所有子依赖项。所以它看起来就像抽象工厂!
使用抽象工厂,注入具体工厂类的实例,并由客户端对象实例化依赖对象。
因此,DI 和抽象工厂几乎是相同的,当您考虑到在这两种情况下,工厂对象都会传递给客户端以使其能够创建其依赖项。
仅在简单情况下,从属对象是在外部创建的并传递给客户端对象。这就是策略模式的工作原理。
由于 DI 容器现在如此流行,并且在框架中使用如此广泛,它们已经有效地取代了抽象工厂,至少作为一种经常谈论的模式。DI 容器是比抽象工厂想象的复杂得多的实体(我相信)。
所以没有最佳实践!