Angular学习笔记(五)依赖注入等

依赖注入的好处主要是松耦合的方式编写代码,可测性和可重用性更高。

1.注入器

每个组件都有一个注入器实例负责注入组件需要的对象,注入器是angular提供的一个服务类,一般情况下你不需要直接调用注入器的方法,注入器会自动地通过组件的构造函数将组件所需的对象注入进组件。

constructor(private productService: ProductService){...}

// tips: 控制反转 Inversion of Control 简称IOC 把依赖的控制权从代码的内部转移到代码的外部(代码对外的依赖是由代码的内部决定的) 
1.侧重于描述目的,把依赖的控制权从代码的内部转移到代码的外部
2.依赖注入侧重于描述手段,实现如何控制反转
实际上,Angular就是一个IOC容器

2.提供器

为了让注入器知道需要被注入的对象如何实例化,需要指定提供器

providers:[ProductService]
// 它和下面这个写法是一样的
providers:[{ provide: ProductService, useClass: ProductService }]
// 使用useClass属性具体实例化类
providers:[{ provide: ProductService, useClass: AnotherProductService }]
providers:[{ provide: ProductService, useFactory:() => {...} }]

// 提供器的作用域:
  // 1.当一个提供器声明在模块时,它对所有组件可见,所有组件都可以注入该提供器(product1Component组件用的就是这个)
  // 2.当一个提供器声明在组件中时,它对当前组件及其子组件可见,其他组件不可以注入。
  // 3.当声明在模块的提供器和声明在组件的提供器具有相同的token时,声明在组件中的提供器会覆盖声明在模块中发的提供器。
  // 4.一般情况下,优先将服务提供器声明在模块中,只有某个服务提供器必须对某个组件可用且其他组件不可用时,将其声明在组件中。

3.工厂方法

根据某些条件,决定实例化哪些对象;实例化对象时,调用对象的构造函数,需要传递参数,这个时候使用工厂提供器

 useFactory 工厂提供器

4.注入器的层级关系

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 版本:Angular 5.0.0-alpha 依赖注入是重要的应用设计模式。它使用得非常广泛,以至于几乎每个人都称...
    soojade阅读 3,008评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 一、什么是依赖注入 控制反转(IoC) 控制反转的概念最早在2004年由Martin Fowler提出,是针对面向...
    Keriy阅读 3,200评论 0 8
  • Swiper(Swiper master)是目前应用较广泛的移动端网页触摸内容滑动js插件。使用的次数越多,遇到的...
    愿你如夏日清凉的风阅读 6,547评论 0 1