策略模式和依赖注入(inject)都允许我们在运行时设置/注入(inject)对象。策略模式和依赖注入(inject)有什么区别?
最佳答案
DI 和策略的工作方式相同,但策略用于更细粒度和短期的依赖关系。
当对象配置了“固定”策略时,例如构造对象时,策略和 DI 之间的区别就模糊了。但在 DI 场景中,对象的依赖关系在其生命周期内发生变化的情况更为罕见,而这对于策略来说并不罕见。
此外,您可以将策略作为参数传递给方法,而方法参数注入(inject)的相关概念并不广泛,并且主要仅在自动化测试的上下文中使用。
策略侧重于意图,并鼓励您使用遵守相同行为契约的不同实现来创建接口(interface)。 DI 更多的是实现某些行为并提供它。
使用 DI,您可以出于其他原因分解您的程序,而不仅仅是为了能够交换部分实现。 DI 中使用的接口(interface)只有一种实现是很常见的。只有一个具体实现(曾经)的“策略”并不是一个真正的问题,但可能更接近于 DI。
关于design-patterns - 策略模式和依赖注入(inject)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4176520/