【GoF 23 概念理解】IoC/DI(控制反转/依赖注入)

搞清楚以下几个问题你就明白什么是 IoC/DI 了:

  1. 参与者都有谁?
  2. 依赖:谁依赖于谁?为什么要依赖?
  3. 注入:谁注入于谁?到底注入什么?
  4. 控制反转:谁控制谁?控制什么?为何叫反转(有反转就有正转了)?

解答

  1. 参与者都有谁:一般有三个参与者:对象、资源、IoC/DI 容器。(资源:对象里使用的非对象内部的成员)
  2. 谁依赖于谁:对象依赖于 IoC/DI 容器。
  3. 为什么要依赖:对象需要容器来提供所需的资源。
  4. 谁注入于谁,注入什么:容器将外部资源注入到对象。
  5. 谁控制谁,控制什么:容器控制对象实例的创建。
  6. 为何叫反转:反转是相对于正向而言的,如果要在类A里面使用类B,你会怎么做呢?
    • 正向:在类A里边直接创建类B的实例对象。
    • 反转:类A不再直接创建类B的实例,而是通过容器来创建,然后容器再将类B的实例注入到类A中。

小结

如果你真的理解了上面几个问题,想必你已经明白了什么是 IoC/DI 了。

其实 IoC/DI 对编程带来的最大改变不是代码上,而是思想上,发生了“主从换位”的改变。应用程序原本是老大,需要获取什么资源都是主动出击,但是再 IoC/DI 的思想中,应用程序变得被动,被动的等待容器注入它所需的资源。

猜你喜欢

转载自blog.csdn.net/qq_45872039/article/details/129458671