依赖注入Dependency Injection的三种方式

1,645 阅读1分钟

类A使用类B的属性或者方法,实现某种功能,那么B就是A的一个依赖,或者说A依赖于B。

依赖注入DI (Dependency Injection):将依赖由自身创建变成外部传入控制,实现依赖反转。

比如汽车Car,借助轮子Wheel,实现run的功能。

0.没有依赖注入时,Car控制Wheel的创建:

1. DI方式1:构造器注入(Constructor Injection)

2. DI方式2:Setter注入(Setter Injection,如果属性是私有的,写个公有的set属性也是一样的)

3. DI方式3: 接口注入(Interface Injection)。通过实现某个接口,来达到设置属性的注入目的。

总结:依赖注入DI,实现了依赖倒置(Dependency Inversion),或者说控制反转(Inversion of control)的功能,将依赖的生命周期控制由内部控制转接到外部,使得代码易于使用和测试。

依赖注入的原理和方式是简单的,复杂的是依赖注入库的实现。通常依赖注入的实现,会与code generation(dart语言,java里则是使用编译时注解或者运行时注解实现)配合实现。

相关链接: