1.1 为什么要有Ioc?
首先传统的应用程序中,类与类之间的耦合性太强,
举个例子应用程序需要使用user类,则需要new User。
但是也需要会用到userdetail,那么就需要在user类中new userdetail类,然后使用userdetail的资源。由应用程序主动创建依赖对象。
1> 这样的设计首先不利于单元测试。因为做user单元测试的就需要new userdetail类。
2> 这样不利于功能复用? 待深入 why?
1.2 什么是Ioc?
Ioc不是一种程序or技术, 它是一种思想,Ioc --- Inversion of Control,翻译为控制反转。
是指将你要依赖的类,更准确的说是对象, 交给Ioc容器处理。
应用程序不需要主动创建类,创建类以及查找, 注入依赖的事情全部交由Ioc容器去做。应用程序被动的接受Ioc容器处理好的注入对象。
控制什么? --主要控制外部资源获取(对象或文件等)
1.3 什么是DI?
DI - Dependency Injection, 翻译为依赖注入,由Ioc容器动态的注入所要依赖的对象到组件中去。
Ioc - DI 可以帮助应用程序具体到类更好,更简洁的完成自身的业务逻辑。而不需要care外部资源怎么获取,来自何处,由谁实现等。
- 谁控制谁: Ioc容器控制依赖对象
- 控制了什么:外部资源
- 谁依赖谁: 应用程序依赖Ioc容器
- 为什么需要依赖:使应用程序更简洁的完成自身业务逻辑,而不需要care 外部资源的how, where, who获取。
- 谁注入谁:Ioc容器注入应用程序所要依赖的对象。
- 注入了什么:注入应用程序所依赖的外部资源。