名词解释
依赖注入
每个应用程序都由若干模块组成,当编写一个复杂的应用程序时,应用程序不同部分应该尽可能独立于其他部分来增加重用与独立测试的可能性。依赖注入有助于把他们粘合在一起,同时保持他们独立。
控制反转
Class A 使用了Class B,A 不需要直接 new (甚至经过更为复杂的创建过程)来获得 B 对象。将定位B的具体实现的权利转交给了第三方(如依赖注入容器),自己只管使用。
如途中获取一个 Car 对象的过程及其复杂
而现在这种控制权交给IoC容器
它是一个专门用来创建对象的工厂
有了 IoC容器,依赖关系就变了
原先的依赖关系就没了,它们都依赖IoC容器了
通过IoC容器来建立它们之间的关系。
(我理解是 A 不再控制 B 的创建)
依赖反转(依赖倒置)
详情可见我的另一篇文章 :https://www.jianshu.com/p/450f261dd558
组件化(Plug-in)
为什么要组件化
挑战
随着业务的越来越复杂,如果把所有业务逻辑都写在同一个类,类会变得越来越复杂,越来越难以维护,功能与功能相互耦合与影响,也违反了设计原则中的开闭原则。
我们需要根据不同的需求组合出不同的功能集合,保证功能之间的松耦合以及灵活配置的能力
解决方案
如何保证各功能模块独立开发,并根据需求的不同将不同功能组合打包:组件化
如何将这些功能模块在程序中关联起来:依赖注入
将各个功能模块划归为各个组件
组件之间遵循依赖倒置的原则松耦合
各个模块通过依赖注入的方式注入 Ioc 容器
实现控制反转