内容纲要
控制反转
- 控制反转,即 Inversion of Control (IoC)
- 不是一种技术,是一种思想
- 核心思想
- 控制(掌控)
- 谁控制谁?
- 容器(IoC 容器)控制对象(依赖对象、被依赖对象)
- 控制什么?
- 资源(对象、数据、文件……)
- 谁控制谁?
- 反转
- 什么是正转?
- 即传统的:对象使用者自己创建、控制对象
- 什么是反转?什么被反转?
- 对象的创建、控制被容器接管
- 对象使用者的创建、控制者角色被反转(获取对象的方式被反转)
- 什么是正转?
- 控制(掌控)
依赖注入
- 依赖注入,即 DI—Dependency Injection(DI)
- 是 IoC 思想的技术实现及升华
- 核心思想
- IoC
- 关系管理(依赖管理)
- 谁依赖谁?
- 程序依赖 IoC/DI 容器、对象依赖其它对象
- 为什么依赖?
- 程序、对象需要其它的资源(对象、数据、文件……)
- 怎么实现依赖?
- 注入
- 谁注入谁?
- 有依赖的程序、对象被注入依赖
- 注入了什么?
- 注入了被注入者需要的资源
- 谁注入谁?
- 注入
- 谁依赖谁?
- 核心原理
- 在系统运行中,动态的向某个对象提供它所需要的资源
传统模式 & DI 模式 示意图 ⬇️
Go 中的依赖注入
目前使用较多的为 dig 和 wire。具体分析可以参考其它同学的文章。