design-patterns - 策略模式和依赖注入(inject)有什么区别?

标签 design-patterns dependency-injection strategy-pattern

策略模式和依赖注入(inject)都允许我们在运行时设置/注入(inject)对象。策略模式和依赖注入(inject)有什么区别?

最佳答案

DI 和 Strategy 以相同的方式工作,但 Strategy 用于更细粒度和短暂的依赖关系。

当对象配置了“固定”策略时,例如在构造对象时,策略和 DI 之间的区别会变得模糊。但是在 DI 场景中,对象的依赖关系在其生命周期中发生变化是更不寻常的,而这在 Strategy 中并不少见。

此外,您可以将策略作为参数传递给方法,而方法参数注入(inject)的相关概念并不普遍,并且主要仅用于自动化测试的上下文中。

策略侧重于意图,并鼓励您创建一个具有不同实现的接口(interface),这些实现遵循相同的行为契约。 DI 更多的是关于实现某些行为并提供它。

使用 DI,您可以出于其他原因分解您的程序,而不仅仅是为了能够交换部分实现。只有一种实现的 DI 中使用的接口(interface)非常常见。只有一个具体实现(曾经)的“策略”不是真正的问题,但可能更接近 DI。

关于design-patterns - 策略模式和依赖注入(inject)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/823387/

相关文章:

java - Spring依赖注入(inject)——配置的最佳设计模式

c++ - 为什么有人会更喜欢静态策略而不是动态策略?

c++ - 理解策略模式

java - Java 的包装工厂

design-patterns - 如何设计带有非面向对象部分的 UML 类图?

c# - 如何将 ApplicationDbContext 传递给 ASP.NET MVC5 构造函数?

java - 有返回值的策略模式

java - 渐进式 "fill out"对象的设计模式(初学者问题)

c++ - 处理不同的图形用户界面状态

entity-framework - 使用多个参数注册 DbContext