使用 injection 解耦
如果你使用了 midway,这些创建的过程将会自动完成,这里为了更好理解,我们将从头开始展示。
首先是安装依赖:
npm i injection --save
然后我们将上面的代码进行解耦。
// 使用 IoC
import {Container} from 'injection';
import {A} from './A';
import {B} from './B';
const container = new Container();
container.bind(A);
container.bind(B);
class C {
consturctor() {
this.a = container.get('A');
this.b = container.get('B');
}
}
这里的 container
就是 IoC 容器,是依赖注入这种设计模式的一种实现,使得 C 和 A, B 没有了强耦合关系,甚至,我们可以把 C 也交给 IoC 容器,所以,IoC 容器成了整个系统的关键核心。
注意
IoC 容器就像是一个对象池,管理这每个对象实例的信息(Class Definition),所以用户无需关心什么时候创建,当用户希望拿到对象的实例 (Object Instance) 时,可以直接拿到实例,容器会 自动将所有依赖的对象都自动实例化。