前言
今天在学习CDI的时候,认识到依赖注入,这个词经常听到,但是每一次都特别的不清楚,似乎有很了解,今天分享一下
What 依赖注入
当说到依赖注入的时候又要是说到反转控制,小编最初本来只想看看什么是依赖注入,一下不小连反转控制也要学习,棒棒的啊—控制反转先不讲
依赖注入:当听到这个名词的时候我就很郁闷!依赖注入是什么鬼,跟angular2中的依赖注入是一个鬼吗?这么多的依赖注入,javaEE中在CDI注解的时候也用到了依赖注入,其实依赖注入很简单他就是实现解耦,解的什么偶那,就是我调用你那么我要跟你实现解耦,就是这么回事,看的这里的时候你会想到我们设计模式中依赖倒转原则(高层模块不依赖于底层模块,他们都应该依赖于抽象,抽象不应该依赖于具体实现,具体事项应该依赖于抽象:面向过程开发的时候,上层调用下层所以上层依赖于下层,当下层模块剧烈变动的时候,导致我们上层的模块必须变动,所以我们的复用性和开发大大的减低开发成本)和单一职责原则是一样的
How 依赖注入
依赖注入,其实就是在我们new出对象的时候不再本类中new出对象交给第三方去new出对象,所以我就解耦了,哈哈
代码
构造函数实现依赖注入
//C类依赖于J,因为j在C中new了对象,体现出了依赖的原则
class C{
J j = new J() ;
}
如果这个时候我们需要向j中传入参数
class C{
//传入参数,这个时候我们会发现我们需要改两个地方,一个C类一个是j类,所以完全不符合面对对象的开放封闭原则
J j = new J(12) ;
}
这个时候我们使用构造函数来实现依赖注入原则,我们程序运行的是时候我们直接初始化了一个对象,并且非常的简单,我们调用的时候根本没有new出来对象,这样他就跟我们解耦和了,
class C{
J j
public c(J j){
this.j = j;
};
}
工厂方法实现依赖注入
当我们调用的时候直接讲用工厂方法,让工厂方法去new出对象,与我们脱离关系
Class C {
J j ;
Human h = new Human;
j=Human.getJ();
}
总结
其实在angular2中也有依赖注入原则,道理是一样的,我们用的时候直接用就可以