一直对依赖注入理解不清楚,今天看《spring in action》摘录简单例子理解下。
1)紧密耦合
public class DamselRescuingKnight implements Knight{
private RescumeDamselQuest quest;
public DamselRescuingKnight(){
quest = new RescumeDamselQuest();
}
public void embarkOnQuest() throws QuestException{
quest.embark();
}
}
这段代码存在的问题是:Knight类 与 Quest类 紧密耦合,这就造成Knight功能有限,并且不易维护、测试。
2)依赖注入,解耦合
public class BraveKnight implements Knight{
private Quest quest;
public BraveKnight(Quest quest){
this.quest = quest;
}
public void embarkOnQuest() throws QuestException{
quest.embark();
}
}
这里通过构造器注入,将Quest类注入到Knight类中,这样二者的耦合没有之前那么强了。