Angular 2 构架 - 依赖注入

控制反转(Inversion of Control,缩写为 IoC ),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度

其中最常见的方式叫做依赖注入(Dependency Injection,简称 DI ),还有一种方式叫 "依赖查找" (Dependency Lookup)

通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它,也可以说,依赖被注入到对象中

在传统的开发模式中,调用者负责管理所有对象的依赖,循环依赖一直是梦魇,而在依赖注入模式中,这个管理权交给了注入器(Injector),它在软件运行时负责依赖对象的替换,而不是在编译时

这种控制反转,运行注入的特点即是依赖注入的精华所在


angularJS 依赖注入

Angular 能通过查看构造函数的参数类型,来得知组件需要哪些服务

例如, SiteListComponent 组件的构造函数需要一个 SiteService:

constructor(private service: HeroService) { }

当 Angular 创建组件时,会首先为组件所需的服务找一个注入器( Injector )

注入器是一个维护服务实例的容器,存放着以前创建的实例。

如果容器中还没有所请求的服务实例,注入器就会创建一个服务实例,并且添加到容器中,然后把这个服务返回给 Angular

当所有的服务都被解析完并返回时, Angular 会以这些服务为参数去调用组件的构造函数,这就是依赖注入

链接: https://fly63.com/course/15_835