原文:Inversion of control - Wikipedia
以下为为摘录翻译。

简介

在软件工程领域,控制反转Inversion of control (IoC)是一种编程原理。
传统的过程式编程Procedural programming,实现业务逻辑的代码自己去调用框架去处理通用逻辑。
控制反转则把控制流反了过来,由框架自己去调用相应的业务逻辑。

Inversion of control is sometimes facetiously referred to as the “Hollywood Principle: Don’t call us, we’ll call you”.

内涵

控制反转的情况下,即使可重用代码和特定于问题的代码在应用程序中一起运行,两部分代码往往也是独立开发的。软件框架,回调,调度程序,事件循环,依赖项注入和模板方法都可视为控制反转的例子。

译者:这样的话,iOS的delegate设计模式其实也体现了控制反转的思想。

目的

  • 任务执行与实现的解耦
  • 让模块专注于它的设计任务
  • 让模块不再需要假设别的系统如何调用自己,取而代之依赖于合约contract
  • 防止替换模块时的副作用

实现技术

在面向对象编程中,有几种技术可以实现控制反转。分别是:

依赖注入是大家比较熟悉的方式,常见的几种注入又可分为:

  • 构造器(Constructor)注入
  • 参数注入
  • setter注入
  • 接口注入