IoC:控制翻转 DI:依赖注入
控制翻转是代码复用的一种模式(注意不是设计模式)
一般(非IoC)的复用,通常是用户代码调用组件(任意形式的被复用的代码,本答案中统称为组件)。也就是用户代码解决“Why it works, What to do”,组件解决“How to do”,逻辑的入口是用户代码, 而控制翻转则是组件来调用用户代码,也就是组件解决“Why it works, When to do”,用户代码解决“What to do”,逻辑的入口是组件
下面是除了DI之外的控制翻转的例子:
1.接口/虚函数 组件调用接口/虚函数,具体由用户代码实现
2.发布订阅(事件)模式 组件触发事件,用户代码订阅事件
3.回调 用户代码写回调,组件来调用
4.几乎所有能被称之为框架的东西 用户代码在规定的地方实现具体业务逻辑,剩下的框架负责