Design patterns 有人能解释一下策略模式与控制反转的关系吗?

Design patterns 有人能解释一下策略模式与控制反转的关系吗?,design-patterns,inversion-of-control,strategy-pattern,Design Patterns,Inversion Of Control,Strategy Pattern,有人能准确地解释策略模式与控制反转的关系吗?当您使用策略模式时,您希望您的其他类依赖于接口,而不是具体的策略。一种方法是将具体的策略注入到使用它作为接口的类中,而不是让类理解如何创建适当的策略。这就是IoC/依赖注入的用武之地 这样做的想法是,您可以使用某种配置或决策类来定义要使用的策略。这可以是国际奥委会的框架,但不一定非得如此。此类负责根据系统状态或配置使用适当的策略配置其他类。具体的策略是通过构造函数或属性设置器创建和注入的,因此对策略类实例化的“控制”是“反转的”——它不是由依赖它的类来

有人能准确地解释策略模式与控制反转的关系吗?

当您使用策略模式时,您希望您的其他类依赖于接口,而不是具体的策略。一种方法是将具体的策略注入到使用它作为接口的类中,而不是让类理解如何创建适当的策略。这就是IoC/依赖注入的用武之地


这样做的想法是,您可以使用某种配置或决策类来定义要使用的策略。这可以是国际奥委会的框架,但不一定非得如此。此类负责根据系统状态或配置使用适当的策略配置其他类。具体的策略是通过构造函数或属性设置器创建和注入的,因此对策略类实例化的“控制”是“反转的”——它不是由依赖它的类来完成的,而是从外部来完成的。

该模式本身并不引入控制反转。如果模式的开发人员将其实现为将可交换算法注入控制器,那么这就是反转。另一方面,如果实现者从其他来源获得要使用的算法(如配置,或通过其他方式在控制器的构造函数中确定),那么这只是普通的代码类型。

没有IOC是完全不同的,你可以在这里阅读更多关于国际奥委会和国际奥委会的信息,了解实际情况


可以将IOC视为一个原则(目的),可以使用策略模式(手段)实现,因为servicelocator模式是另一个选项