【NestJS系列】DI依赖注入与IOC控制反转

依赖注入是控制反转的一种技术,用于解决类之间耦合度过高的问题。在NestJS中,依赖注入通过IOC容器实现,允许开发者声明类的依赖并在需要时自动注入,降低了代码的耦合度,提高了可维护性。使用@.Injectable装饰器标记可管理类,然后在构造函数中声明依赖,最后在Module中配置依赖关系,NestJS会自动生成依赖关系图并管理实例。
摘要由CSDN通过智能技术生成

什么是依赖注入(DI)与控制反转(IOC)

这两个概念不要搞混了,IOC其实是面向对象编程中的一种设计模式,而DI则是为了实现IOC的一种技术。

传统耦合代码

比如,我们有两个类,它们之间存在耦合关系,我们一般会这样写:

// A.ts
class A {
  name: string
  constructor(name: string) {
    this.name = name
  }
}

// B.ts
class B {
  age: number
  name: A
  constructor(age: number) {
    this.age = age
    this.name = new A('南玖')
  }
}

// main.ts
const b = new B(18)
console.log(b)

当我们遇到类与类之间存在依赖关系时,一般会直接在类的内部创建依赖对象,这样就会导致各个类之间形成耦合,并且这种关系会随着依赖关系越来越复杂从而耦合度也会越来越高,最终造成代码的难以维护。

简易版IOC

为了解决上面代码带来的耦合性问题,我们可以使用IOC容器来进行管理

// container.ts
export class Container {
  modules = new Map()
  
  // 注册实例
  provide(key: string, clazz: any, argvs: Array<any>) {
    this.modules.set(key, {clazz, argvs})
  }
  // 获取实例
  get(key: string) {
    const {clazz, argvs} &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值