4

谁能准确解释策略模式与控制反转的关系?

4

4 回答 4

6

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

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

于 2008-12-23T17:46:46.530 回答
2

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

于 2008-12-23T17:57:24.293 回答
0

没有 IOC 是完全不同的事情,您可以在此处阅读有关 IOC 和 DI 的更多信息,了解实际想法

http://www.codeproject.com/KB/aspnet/IOCDI.aspx

于 2010-04-19T04:56:15.737 回答
-1

IOC 可以被认为是可以使用策略模式(手段)实现的主体(目的),因为服务定位器模式将是另一种选择。

于 2011-05-12T06:19:48.153 回答