跳到主要内容

控制反转与依赖注入

依赖注入是什么?​

  • 定义: 把依赖的类作为参数传入, 由外部在运行时决定具体实现;
  • 效果: 类不再自己 new 依赖, 依赖关系从内部实现移到外部调用方;
class TextInput {
private spellCheck: SpellCheck;

public TextInput(spellCheck: SpellCheck) {
this.spellCheck = spellCheck;
}
}
  • 变体: 构造函数注入、属性注入、方法参数注入; 上例为构造函数注入;

控制反转与依赖注入是什么关系?​

  • 控制反转 (IoC): 对象创建与依赖装配的控制权从类内部转移给外部容器或调用方;
  • 依赖注入 (DI): 是控制反转最常用的实现方式, 即"由外部把依赖传进来";
  • 关系: 依赖注入是手段, 控制反转是结果;

依赖注入为什么能支撑开闭原则?​

  • 原因: 调用方只依赖接口, 新增实现时只增加新的实现类并注入;
  • 前提: 依赖类型必须是接口或抽象类, 见 SOLID 原则;