写点什么

IOC 控制反转 DI 依赖注入

作者:EchoZhou
  • 2024-12-06
    上海
  • 本文字数:676 字

    阅读完需:约 2 分钟

依赖倒转原则 (DIP-Dependency Inversion Principle):高层模块不应依赖于低层模块,二者都应依赖于抽象;而且抽象不应依赖于细节,细节应依赖于抽象。

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('Snow')    }} const c = new B(18) c.entity.name
复制代码

B 中代码的实现是需要依赖 A 的,两者的代码耦合度非常高。当两者之间的业务逻辑复杂程度增加的情况下,维护成本与代码可读性都会随着增加,并且很难再多引入额外的模块进行功能拓展


class A {    name: string    constructor(name: string) {        this.name = name    }}  class C {    name: string    constructor(name: string) {        this.name = name    }}// 调度器,类似发布订阅class Container {    modeuls: any    constructor() {        this.modeuls = {}    }    provide(key: string, modeuls: any) {        this.modeuls[key] = modeuls    }    get(key) {        return this.modeuls[key]    }} const mo = new Container()mo.provide('a', new A('snow one'))mo.provide('c', new C('snow two')) class B {    a: any    c: any    constructor(container: Container) {        this.a = container.get('a')        this.c = container.get('c')    }} new B(mo)
复制代码

其实就是写了一个中间件,来收集依赖,主要是为了解耦,减少维护成本

发布于: 刚刚阅读数: 4
用户头像

EchoZhou

关注

还未添加个人签名 2018-04-24 加入

还未添加个人简介

评论

发布
暂无评论
IOC控制反转 DI依赖注入_nestjs_EchoZhou_InfoQ写作社区