2.IOC控制反转 DI依赖注入
IOC控制反转
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则。
在传统的编程中,对象由程序代码直接创建,由程序代码直接操控对象。
而控制反转则是把对象的创建、依赖关系的传递等交给了第三方,通过第三方来实现对象的创建和依赖关系的传递。
依赖注入
依赖注入(Dependency Injection,简称DI),是一种对象之间依赖关系的一种注入方式,即通过一种方法,将某个对象的依赖关系注入到另一个对象中。
- 依赖注入的好处
- 解耦:将对象的创建和依赖关系的传递交给了第三方,降低了耦合度。
代码实例
- 使用前的代码实例
class A {
name: string;
constructor(name: string) {
this.name = name;
}
}
class B {
age: number;
entity: A;
constructor(age: number) {
this.age = age;
this.entity = new A('张三');
}
}
const c = new B(18);
console.log(c.entity.name)
- 使用后的代码实例
class A {
name: string;
constructor(name: string) {
this.name = name;
}
}
class C {
name: string;
constructor(name: string) {
this.name = name;
}
}
class Container {
modes: any;
constructor() {
this.modes = {}
}
provide(key: string, value: any) {
this.modes[key] = value
}
get(key: string) {
return this.modes[key]
}
}
const mo = new Container();
mo.provide('a', new A('aaaa'));
mo.provide('c', new C('ccc'));
class B {
a: any;
c: any;
constructor(container: Container) {
this.a = container.get('a');
this.c = container.get('c');
}
}
console.log(new B(mo).a.name)