DI可以理解为IOC的一种具体实现方式
下面具体代码表示DI的好处
具体代码的关系结构如下
假设在业务逻辑中,A对C会有依赖关系产生
Container类是我们手动编写的一个容器,其中包括了DI注入的两种最常见的方式:属性注入和构造函数注入
public class A {
// 这里A也是面向C的接口编程而不是之间new一个C
private IC ic;
public A() {
}
public A(IC ic) {
}
public void print(){
this.ic.print();
}
public void setIc(IC ic){
this.ic = ic;
}
}
public class C implements IC{
@Override
public void print() {
}
}
// IC是C类要实现的一个接口
public interface IC {
void print();
}
// 手动写的容器
public class Container {
// 假设的方法
public void getBean(){
IC ic = new C();
// 构造函数注入
A a = new A(ic);
// 属性注入
A a1 = new A(ic);
a1.setIc(ic);
}
}
有了容器的存在,使得A对C类的依赖程度降低,就像两个齿轮,之前是相互依赖才能工作,现在是通过容器连接起来,因此容器实现了解耦合的作用,使得类之间的依赖程度降低,因此代码的可维护性提高了