本文转载自博客:https://www.cnblogs.com/xinhuaxuan/p/6132372.html
1、控制反转:谁控制谁?控制什么?为何叫反转(对应于正向)?哪些方面反转了?为何需要反转?
- 谁控制谁?
- 控制什么?
- 为何叫反转(对应于正向)?
- 哪些方面反转了?
- 为何需要反转?
2、依赖:什么是依赖(按名称理解、按动词理解)?谁依赖于谁?为什么需要依赖?依赖什么东西?
- 什么是依赖(按名称理解、按动词理解)?
- 谁依赖于谁?
- 为什么需要依赖?
- 依赖什么东西?
3、注入:谁注入于谁?注入什么东西?为何要注入?
- 谁注入于谁?
- 注入什么东西?
- 为何要注入?
4、依赖注入和控制反转是同一概念吗?
- 不是同一概念,但实际上它们描述的是同一件事情,只不过是从不同角度来说的:控制反转是从 IoC/DI 容器的角度;依赖注入是从应用程序的角度。
- 控制反转的描述:IoC/DI 容器反过来控制应用程序,控制应用程序锁所需要的外部资源(如:外部资源)。
- 依赖注入的描述:应用程序依赖 IoC/DI 容器,依赖它注入所需要的外部资源。
5、参与者都有哪些?
- IoC/DI 容器、应用程序。
6、IoC/DI 是什么?能做什么?怎么做?用在什么地方?
- IoC/DI 是什么?
- 能做什么?
- 怎么做?
- 用在什么地方?
7、什么是外部资源?
- 对于一个类来讲,外部资源就是指在本类内部不能得到或实现的东西,比如:在类里面需要读取一个配置文件,那么这个配置文件就相当于这个类的外部资源。又比如:A 类里面要调用 B 类,那么对于 A 类来讲 B 类就是其外部资源。
8、什么是 IoC 容器?
- 简单理解就是:实现 IoC 思想,并提供对象创建、对象装配以及对象生命周期管理的软件就是 IoC 容器。
- 对 IoC 的理解:
9、使用 IoC/DI 容器开发需要改变思路
- 应用程序不主动创建对象,但要描述创建它们的方式。
- 在应用程序代码中不直接进行服务的装配,但是要描述哪一个组件需要哪一项服务,由容器负责将它们装配在一起。也就是说:所有的组件都是被动的,组件初始化和专供都由容器负责,应用程序只是在获取相应组件后实现功能即可。