策略模式和依赖注入都允许我们在运行时设置/注入对象。策略模式和依赖注入有什么区别?
DI和策略以相同的方式工作,但是策略用于更细粒度和短暂的依赖。
当对象配置有“固定”策略时,例如当对象被构造时,Strategy和DI之间的区别模糊。但在DI情况下,更常见的是对象的依赖性在其生命周期中改变,而这在战略中并不少见。
此外,您可以将策略作为参数传递给方法,而方法参数注入的相关概念并不广泛,并且大多仅在自动测试的上下文中使用。
策略侧重于意图,并鼓励您创建一个具有遵守相同行为契约的不同实现的接口。 DI更多的是只是有一些行为的实现并提供它。
使用DI,您可以分解您的程序的其他原因,而不仅仅是为了交换部分实现。在DI中使用的仅具有一个实现的接口是非常常见的。 “战略”只有一个具体的实施(永远)不是一个真正的问题,但可能更接近DI。