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

标签 design-patterns dependency-injection strategy-pattern

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

最佳答案

DI 和策略的工作方式相同,但策略用于更细粒度和短期的依赖关系。

当对象配置了“固定”策略时,例如构造对象时,策略和 DI 之间的区别就模糊了。但在 DI 场景中,对象的依赖关系在其生命周期内发生变化的情况更为罕见,而这对于策略来说并不罕见。

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

策略侧重于意图,并鼓励您使用遵守相同行为契约的不同实现来创建接口(interface)。 DI 更多的是实现某些行为并提供它。

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

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

相关文章:

java - 什么设计模式适合处理很多条件分支

c# - 与访客的抽象树

c# - 查看模型和依赖注入(inject)

c# - 依赖容器 : how to instantiate object instances

design-patterns - 模式策略、访问者和模板方法之间有什么区别?

c# - 以命令模式保存系统

design-patterns - 带有实时示例的设计模式

grails - 配置和注入(inject) Grails 服务

java - "@inject"-ed 属性保持为空

c# - 关于装饰器和策略模式 C# 的设计 OOP 问题