面向对象的一种设计原则,用来减少代码之间的耦合度,增加了代码的可维护性。
在A类的外部实例化B类,在实例化A类的时候,将它的依赖项通过contructor构造函数参数的形式注入到类的内部。这样在修改B类的时候,不需要修改A类。
Angular框架帮助我们实例化依赖类。
DI的四个核心概念:
1)、Dependency:组件要依赖的实例对象(服务实例对象)
2)、Token:获取服务实例对象的标识
3)、Injector:注入器,负责创建维护服务类的实例对象并向组件中注入服务实例对象。
单实例、不同的注入器创建不同的依赖、子注入器可以向上查找到父注入器生成的依赖
4)、Provider:配置注入器对象,指定创建服务实例对象的服务类和获取实例对象的标识
将实例对象和外部的引用建立了松耦合的关系,外部通过标识获取实例对象,只要表示保持不变,内部代码怎么变化都不会影响外部