IOC控制反转
- 含义:把高层对底层的依赖 转移到由第三方决定 避免高层对底层的直接依赖 使得程序架构具有良好的扩展性和稳定性
- 理解:就是一种目的--解除依赖
DI依赖注入
- 含义:在构造对象是 可以自动化去初始化 被构造对象所需的对象
注入方式有- 构造函数注入
- 属性注入
- 方法注入
【注】以上注入方式 实际都是靠反射做到的
- 理解:是实现IOC的一种手段 只有通过依赖注入 才能做到无限层级的依赖抽象 也才能实现控制反转
DIP依赖倒置原则
- 含义:系统架构时 高层模块不应该依赖于底层模块 二者应该通过抽象来依赖 -- 即依赖抽象 而非细节
最简单的抽象实例化
IPhone phone = new AndroidPhone()
这样左边抽象 但右边实例化非抽象 想实现左右两边均可抽象 这种情况下 便出现了容器【常见容器 比如Unity、Autofac等】由容器去决定创建具体类型 (Unity的使用可参见:https://www.cnblogs.com/Alicia-meng/p/13551564.html)
那什么是高层对底层的依赖呢
当程序较为复杂时 往往分层架构就是必须的 我们比较常见的一般都是3层架构 像这样
当UI层 去调用BLL层时 UI层就相对而言是高层 BLL层就相对是底层
此时想实现DIP依赖倒置原则 我们可以这样做