IoC 发展简介
什么是IoC ?
维基百科的解释是这样的, 另外注意英文版和中文版是有区别的, 中文版相对局限, 而英文版又宽泛的感觉没讲啥.
In software engineering, inversion of control (IoC) is a programming principle.
IoC inverts the flow of control as compared to traditional control flow.
In IoC, custom-written portions of a computer program receive the flow of control from a generic framework.
A software architecture with this design inverts control as compared to traditional procedural programming: in traditional programming, the custom code that expresses the purpose of the program calls into reusable libraries to take care of generic tasks, but with inversion of control, it is the framework that calls into the custom, or task-specific, code.
来源:https://en.wikipedia.org/wiki/Inversion_of_control
在软件工程中, 反转控制(IoC)是一种编程风格或者原则.
IoC是相对于传统的控制流即输入输出这种有顺序的串行流相比较而言的. IoC是典型的反转控制.
IoC通常来说在软件架构上要比传统架构复杂, 不是那么直接, 比如依赖的来源就不一定那么明确. 关于其具体实现通常也不需要太关心, 这样就可以解耦掉一部分设置.
IoC 发展简介
IoC 的简史
• 1983年,Richard E. Sweet 在《The Mesa Programming Environment》中提出“Hollywood Principle”(好莱坞原则)
不是演员去找导演, 而是导演主动找演员.
• 1988年,Ralph E. Johnson & Brian Foote 在《Designing Reusable
Classes》中提出“Inversion of control”(控制反转)
程序中的依赖或者数据由其他方提供, 而非你自己(程序员)去找
• 1996年,Michael Mattsson 在《Object-Oriented Frameworks, A survey of
methodological issues》中将“Inversion of control”命名为“Hollywood principle”
• 2004年,Martin Fowler 在《Inversion of Control Containers and the
Dependency Injection pattern》中提出了自己对IoC 以及DI 的理解
这可能是大家对IoC和DI最广泛了解的节点. 其实这里作者只是总结了前人经验, 没有提出新的理论.
IoC的容器其实早在此之前就已经实现并提出了, Martin Fowler其实并没有更多的建树, 因此这里的这篇文章建议只供参考, 因为其仍有很多局限.
• 2005年,Martin Fowler 在《InversionOfControl》对IoC 做出进一步的说明