使用 injection 解耦

如果你使用了 midway,这些创建的过程将会自动完成,这里为了更好理解,我们将从头开始展示。

首先是安装依赖:

  1. npm i injection --save

然后我们将上面的代码进行解耦。

  1. // 使用 IoC
  2. import {Container} from 'injection';
  3. import {A} from './A';
  4. import {B} from './B';
  5. const container = new Container();
  6. container.bind(A);
  7. container.bind(B);
  8. class C {
  9. consturctor() {
  10. this.a = container.get('A');
  11. this.b = container.get('B');
  12. }
  13. }

这里的 container 就是 IoC 容器,是依赖注入这种设计模式的一种实现,使得 C 和 A, B 没有了强耦合关系,甚至,我们可以把 C 也交给 IoC 容器,所以,IoC 容器成了整个系统的关键核心。

注意

IoC 容器就像是一个对象池,管理这每个对象实例的信息(Class Definition),所以用户无需关心什么时候创建,当用户希望拿到对象的实例 (Object Instance) 时,可以直接拿到实例,容器会 自动将所有依赖的对象都自动实例化