//代码来自知乎摘抄
依赖:一个类的属性是对象的时候,称为依赖。
注入:给对象(类的某个属性)赋值。
依赖注入(将被依赖的对象注入给依赖类)有三种方式:构造函数注入、setter方法注入、接口注入
构造函数注入:
将被依赖对象通过构造函数的参数注入给依赖对象,在依赖对象初始化的时候实现注入。
- 在对象初始化完成后就获得了可以使用的对象。
- 依赖对象的属性值,就一直是被依赖对象的值了,建立了长期的关系。
- 当需要注入的对象很多时,构造器的参数列表会很长
- 通过反射构造对象的时候,构造方法无法被继承,无法设置默认值。
- 不够灵活。在有很多中注入方式的时候,每种方式只需注入指定几个依赖,(对于非必须的依赖处理)那么就需要提供多个重载的构造函数,比较麻烦。
//从其他人的知乎摘抄
public class StupidStudent {
private SmartStudent smartStudent;
public StupidStudent(SmartStudent smartStudent) {
this.smartStudent = smartStudent;
}
public doHomewrok() {
smartStudent.doHomework();
System.out.println("学渣抄作业");
}
}
<