控制反转(IoC) & 依赖注入(DI) & Go

内容纲要

控制反转

  • 控制反转,即 Inversion of Control (IoC)
  • 不是一种技术,是一种思想
  • 核心思想
    • 控制(掌控)
      • 谁控制谁?
        • 容器(IoC 容器)控制对象(依赖对象、被依赖对象)
      • 控制什么?
        • 资源(对象、数据、文件……)
    • 反转
      • 什么是正转?
        • 即传统的:对象使用者自己创建、控制对象
      • 什么是反转?什么被反转?
        • 对象的创建、控制被容器接管
        • 对象使用者的创建、控制者角色被反转(获取对象的方式被反转)

依赖注入

  • 依赖注入,即 DI—Dependency Injection(DI)
  • 是 IoC 思想的技术实现及升华
  • 核心思想
    • IoC
    • 关系管理(依赖管理)
      • 谁依赖谁?
        • 程序依赖 IoC/DI 容器、对象依赖其它对象
      • 为什么依赖?
        • 程序、对象需要其它的资源(对象、数据、文件……)
      • 怎么实现依赖?
        • 注入
          • 谁注入谁?
            • 有依赖的程序、对象被注入依赖
          • 注入了什么?
            • 注入了被注入者需要的资源
  • 核心原理
    • 在系统运行中,动态的向某个对象提供它所需要的资源

传统模式 & DI 模式 示意图 ⬇️
file

Go 中的依赖注入

目前使用较多的为 dig 和 wire。具体分析可以参考其它同学的文章。

Dig

golang 依赖注入 wire 和 dig 体验对比

参考
IoC 之 2.1 IoC基础 ——跟我学Spring3

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注