What
代理模式的一种应用:在A对象中需要创建另一个类B的实例;
Why
实现依赖项注入可为您带来以下优势:
- 重用代码
- 易于重构
- 易于测试
How
- 接口注入
//根据预先在配置文件中设定的实现类的类名,动态加载实现类,并通过InterfaceB 强制转型后为ClassA所用
public class ClassA {
private InterfaceB clzB;
public init() {
Ojbect obj =
Class.forName(Config.BImplementation).newInstance();
clzB = (InterfaceB)obj;
}
……
}
- 构造器注入
class Car {
private final Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
public void start() {
engine.start();
}
}
- 设置注入(Setter方法注入)
//可通过修改传入Engine的实例( 比如Engine的子类等)实现不同的注入,而不用修改Car类。
class Car {
private Engine engine;
public void setEngine(Engine engine) {
this.engine = engine;
}
public void start() {
engine.start();
}
}
网友评论