1.依赖注入DI
1.1 什么是DI
简单来说,就是在如果在一个对象主体中要使用另一个对象,为了实现松耦合,通过传递被使用对象的引用到该对象主体,来实现对该对象的使用。
举个简单的例子:
代码1.1.1
class Engine{
public void start(){}
}
class Car{
public void run(Engine engine){engine.start()}
}
1.2 为什么要DI
很明显的一点是为了实现松耦合,提高可复用性。
正如上面的例子。如果不通过DI,那么需要在Car对象中new一个Engine对象。
代码1.2.1
class Engine{
public void start(){}
}
class Car{
private Engine engine = new Engine();
public void run(){engine.start()}
}
而上面这种方式,无疑使得Car对象,变得臃肿了,主要是使得Car和Engine紧耦合在了一起,如果以后,想对Engine进行扩展,势必Car也得被迫进行重构。
比如说,有了几种可供选的Engine装置,则需要重构Engine,而使Engine能够满足这种多态,则需要重构Engine为一个Interface,如下。
代码1.2.2
Interface Engine{
public void start();
}