Angular依赖注入(6)

1.依赖注入
  • 依赖注入是实现控制反转的一种软件设计模式,一个依赖是一个被其他对象(createShipment)调用的对象(服务),注入则是将被依赖的对象(product)实例传递给依赖对象(createShipment)的行为。
// 写了一个方法,方法的参数是一个对象
//当调用方法需要实例化对象并传递给方法。
//New 一个商品的信息在里面,调用createshipment方法,将product传给
//createshipment方法依赖product类,但createshipment方法本省并不知道怎么创建一个product
var product = new product();
createShipment(product)
  • 如果createshipment有三个参数,每个信息又有他自己的依赖,就会实例化很多对象
var product =new Product();
var shipCompany =new shipCompany();
var address=new Address();
var order =new Order();
order.setAddress(address);
createShipment(product,shipCompany,order);
  • 控制反转:(inversion of control)
    将依赖的控制权聪代码的内部转为代码的外部,侧重描述目的
    实现控制反转的手段是依赖注入
2.优点
  • 松耦合,可重用
  • 提高了组件的可测试性
3.注入器提供器
  • 注入器:每一个组件都有一个组件都有一个注入器实例负责注入组件需要的对象,服务类,一般不需要直接调用,自动通过构造函数注入进组件
//注入器:
constructorprivate productServiceProductService{...}
//为了让注入器知道,指定的对象,需要提供器
//提供器:通过组件模块的属性声明providers
providers:[ProductService]
providers;[{provide:ProductService,useClass:ProductService}]
providers:[{provide:ProductService,useClass:anothorProducxtService}]
providers:[{provide:ProductService,useFactory:() =>{...}}]
  • 提供器作用域规则:
当提供器声明在模块中时,对所有组件可见,所有组件可以注入,声明在组件中时,只对组件和子组件可见
优先将服务提供器声明在模块中
  • 注入器的层级关系:
    这里写图片描述
  • 一个组件声明了一个没有参数的构造函数,这个组件没有被注入任何东西
  • angular里只有构造函数注入方式
4.小结

简单的概念理解,还需要深入学习,不断实践

猜你喜欢

转载自blog.csdn.net/lyj4495673/article/details/80885688
今日推荐