可能重复:
什么是控制反转?
我总是听到用模糊的术语描述的控制反转,而且几乎总是通过例子而不是正式的定义
一方面,我听说它是在对象编程到抽象方面描述的,并放弃了对显式实例化新对象及其对象图的控制权,而不是请求将其依赖项注入到运行时条件中的对象
然后我听到它在针对框架的编程方面进行了解释,其中程序员放弃了控制流以支持对扩展点进行编码(例如事件和回调)
在这两种情况下到底是什么被倒置了,它们有什么共同点,它们是 IoC 的等效示例。我发现很难找到一个普遍接受的定义
可能重复:
什么是控制反转?
我总是听到用模糊的术语描述的控制反转,而且几乎总是通过例子而不是正式的定义
一方面,我听说它是在对象编程到抽象方面描述的,并放弃了对显式实例化新对象及其对象图的控制权,而不是请求将其依赖项注入到运行时条件中的对象
然后我听到它在针对框架的编程方面进行了解释,其中程序员放弃了控制流以支持对扩展点进行编码(例如事件和回调)
在这两种情况下到底是什么被倒置了,它们有什么共同点,它们是 IoC 的等效示例。我发现很难找到一个普遍接受的定义
这当然是一个合理的解释:
http://en.wikipedia.org/wiki/Inversion_of_control
我拥有这本书:我推荐它,因为它很好地涵盖了许多设计原则,包括 IoC:
C# 中的敏捷原则、模式和实践:Martin Fowler、Micah Fowler
您可能还会发现这些链接很有帮助:
两个精辟的“解释”:
国际奥委会有时被称为“好莱坞原则”:不要打电话给我们,我们会打电话给你
IoC = 婚姻;国际奥委会容器=妻子