根据个人学习情况,筛选出特别关注的信息,完整内容请看原版,仅仅是个人学习笔记。
目录
一、IoC类型
IoC(inverse of Control) 包括两方面内容:控制和反转
主要可以划分为3种类型:构造函数注入、属性注入和接口注入。
故事情节1:有一个剧本《墨攻》MoAttack类,通过调用类的构造函数,不需要关心具体由谁来饰演隔离这个角色,在①处传入饰演者并按照剧本要求完成表演即可。
(1)构造函数注入
/*剧本类*/
public class MoAttack {
private GeLi geli;
//①注入隔离的具体饰演者
public Moattack(GeLi geli) {
this.geli = geli;
}
public void cityGateAsk() {
geli.responseAsk("墨者隔离");
}
}
故事情节2:角色的具体饰演者由导演来安排
/*导演类*/
public class Director{
public void direct() {
//指定角色的饰演者
GeLi geli = new LiuDeHua();
//注入具体饰演者到剧本中
MoAttack moAttack = new MoAttack(geli);
moAttack.cityGateAsk();
}
}
故事情节3:虽然饰演隔离者是影片第一主角,但并非每个场景需要隔离者的出现,在这个情况下通过构造函数的注入方式并不妥当,这时考虑使用属性注入,有选择的通过Setter方法完成调用类所需依赖的注入。
(2)属性注入
/*剧本类*/
public class MoAttack {
private GeLi geli;
public void setGeLi(GeLi geli) {
this.geli = geli;
}
public void cityGateAsk() {
geli.responseAsk("墨者隔离");
}
}
/*导演类*/
public class Director{
public void direct() {
MoAtack moAttack = new MoAttack();
//调用属性Setter方法注入
GeLi geli = new LiuDeHua();
moAttack.setGeLi(geli);
moAttack.cityGateAsk();
}
}