依赖注入
2020-08-26 本文已影响0人
李霖弢
当一个类A的实现需要借助另一个类B时,称为B是A的依赖,如果在A的内部去实例化B,则AB之间耦合过高,当B需要调整时也需要对A进行调整,程序难以维护。
要解决这个问题,就要把A类对B类的控制权抽离出来,交给一个第三方去做,把控制权反转给第三方,就称作"控制反转"。依赖注入是控制反转的一种典型实现方法,由第三方(IOC容器)来控制依赖,把他通过构造函数、属性或者工厂模式等方法,注入到类A内,对类A和类B进行了解耦。
- 构造方法注入
class Chuan{
Jiang j ;
public Chuan(Jiang j){
this.j = j;
};
}
- 工厂模式注入
class Factory {
/**
* 通过msg来确定你要什么长度颜色大小。工厂出一套规范。之后约束拓展在此类就可以进行
**/
public Jiang getJiang(String msg){
if(msg="10"){
return new Jiang(10)
}else if(msg="red"){
return new Jiang("red")
};
};
}
class Chuan {
Jiang j ;
void run(){
Factory h = new Factory();
j=h.getJiang(“red“); //得到了红色的桨
j=h.getJiang(“10“); //得到长度10的桨
};
}