可测性和可重用性更高
假设,一个product,然后用productService服务获取信息。没有依赖注入,在组件里,得知道如何去实例化这个服务。-----
不管用哪种方式,组件将于服务紧密联系。
在另一个项目,重用组件,但是得使用另一个不同的服务对象获取。必须的得修改new 一个anthor服务。这个说明组件和服务是紧密耦合在一起的。想要在别的项目里用商品组件。得改代码才能用。依赖注入能解除这种关系。想用,不用修改代码。
providers:[]哪些对象需要依赖注入,一个元素叫provide,providers定义了对象一个注入到组件或指令之前,如何实例化。

token的类型,由provide决定,
注册一个类型是prodductService的token,当有组件或指令声明需要一个prodductService的token时,实例化一个prodductService,并将注入目标对象。
组件或指令如何声明需要一个prodductService的token呢?用构造函数

看到这个声明,就会去providers里找,token对应的类是什么,实例化后注入,组件本身不知道是providers哪个,只需要创建好的对象,调用方法就可以。别的项目想用如下代码

消除了服务和组件的松耦合,提高了重用性。第一个好处。
第二个好处,可测性。
登录功能,组件和服务,服务连接服务器,依赖注入可以测试。创建mock,将mock服务注入,可测,服务开发好,将服务注入,可测。

网友评论