NinghaoNodeCamp 2019(第二回 7/15 - 7/30) 查看介绍立即报名 →

理解依赖注入(Dependency Injection)

一个东西(Object)需要其它东西提供的功能,就把这些提供功能的东西附加到需要它们的东西里面,这就是依赖注入。从字面意思去理解,不用考虑的太复杂了。依赖注入,就是注入需要的依赖的东西。

看个例子,有个类叫 ImageController,它里面的 index 方法可以返回所有的图像资源,在这个方法里依赖 ImageService 里面提供的服务,它会帮 ImageControllerindex 方法找到需要的图像资源。

不使用依赖注入

ImageController 需要 ImageService 里的功能,如果不使用依赖注入的方式,代码大概像这样:

class ImageService {
  private readonly images = [];

  findAll() {
    return this.images;
  }
}

class ImagesController {
  private imageService;

  constructor() {
    this.imageService = new ImageService();
  }
  
  index() {
    return this.imageService.findAll();
  }
}

在上面的例子里面没有使用依赖注入,而是直接在类的构造方法里自己创建了一个 ImageService 实例。这个 ImageService 就是 ImagesController 里依赖的一个东西,因为在它的 index 方法里,需要使用 ImageService 里的 findAll() 方法获取到需要的图像资源。

使用依赖注入

使用依赖注入会让代码更灵活一些。下面用依赖注入的方式改造一下 ImageController 这个类:

class ImagesController {
  constructor(private imageService: ImageService) {}
  
  index() {
    return this.imageService.findAll();
  }
}

用的时候需要这样:

const imageService = new ImageService();
const imagesController = new imagesController(imageService)

评论

皓哥,讲一讲 IoC 控制反转?

行啊,可以再多解释一下 :)



微信好友

用微信扫描二维码,
加我好友。



微信公众号

用微信扫描二维码,
订阅宁皓网公众号。



240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

10580
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点