依赖注入

2020-11-14  本文已影响0人  小虫虫奇遇记

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();
    }
}

//可通过修改传入Engine的实例( 比如Engine的子类等)实现不同的注入,而不用修改Car类。
class Car {

    private Engine engine;

    public void setEngine(Engine engine) {
        this.engine = engine;
    }

    public void start() {
        engine.start();
    }
}
上一篇下一篇

猜你喜欢

热点阅读