依賴注入(Dependency Injection,DI)可以通過以下三種方式實現(xiàn):
1.構造函數(shù)注入(Constructor Injection):通過在類的構造函數(shù)中聲明依賴項,容器會在創(chuàng)建類的實例時將依賴項傳遞給構造函數(shù)。例如:
kotlinCopy codepublic class MyService {
private final MyDependency myDependency;
public MyService(MyDependency myDependency) {
this.myDependency = myDependency;
}
// 使用 MyDependency
}
2.屬性注入(Property Injection):通過在類中聲明依賴項的屬性,并提供一個設置依賴項屬性的方法,容器會在創(chuàng)建類的實例后,通過反射或其他方式設置依賴項的屬性。例如:
public class MyService {
private MyDependency myDependency;
public void setMyDependency(MyDependency myDependency) {
this.myDependency = myDependency;
}
// 使用 MyDependency
}
3.方法注入(Method Injection):通過在類中聲明一個設置依賴項的方法,容器會在創(chuàng)建類的實例后調(diào)用該方法并將依賴項傳遞給它。例如:
public class MyService {
private MyDependency myDependency;
public void setMyDependency(MyDependency myDependency) {
this.myDependency = myDependency;
}
public void doSomething() {
// 使用 MyDependency
}
}
無論使用哪種方式,依賴項的創(chuàng)建和維護都是由外部容器負責,以減少對象之間的緊耦合性和提高可重用性。通常,依賴注入模式使用第三方依賴注入框架來管理依賴項。常見的依賴注入框架包括Spring、Guice、Dagger等。