依赖注入要解决的问题,就是当一个对象B要依赖对象A这样的一个对象的时候,对象A不需要去实例化,对象A只需要用某种机制注入进来。声明自己需要一个A类型的对象,有人可以给一个吗?
控制反转:侧重于描述目的。依赖的控制权从代码的内部反转到代码的外部。
依赖注入:侧重于描述手段,如何实现控制反转。使用的手段叫做依赖注入。(例如下:)
Var product=new Product(); createXiangzao(product);
Angule实现控制反转的手段就是依赖注入,实现了控制反转的框架被称为IOC容器。Angular就是一个IOC容器
好处:
1、松耦合、可重用
@ngModule({ providers:[ProductService] //是一个数组,声明了那个对象需要注入 // providers:[{provide:ProductService,useClass:ProductService}] 与上面是相等的意思。 }) @Component({ 省略组件配置 }) export class ProductComponent{ product:Product; constructor(productService:ProductService){ this.product=productService.getProduct(); } }
2、可测试性:如果登陆依赖的组件没有开发好,而自己登陆组件已经开发完毕,可以先建立测试的。之后使用依赖注入改成真正开发的组件。提高了可测试性,避免因为此类事情影响开发进度。
原文链接:https://www.f2er.com/angularjs/145963.html