【发布时间】:2021-09-16 10:03:36
【问题描述】:
有没有办法将两个实现绑定到一个接口,并通过接口方法调用同时触发两个实现的方法。我想使用两个应用程序进行分析,最好用一个界面同时触发它们
【问题讨论】:
-
您可以使用 dagger 的多重绑定将单个接口的实现列表注入到实例dagger.dev/dev-guide/multibindings.html
标签: android kotlin dagger-2 dagger-hilt
有没有办法将两个实现绑定到一个接口,并通过接口方法调用同时触发两个实现的方法。我想使用两个应用程序进行分析,最好用一个界面同时触发它们
【问题讨论】:
标签: android kotlin dagger-2 dagger-hilt
一个简单的解决方案是使用委托实现。 对于这样的一个接口和两个实现
public interface MyInterface{
public void myMethode();
}
public class MyInterfaceImplA{
public void myMethode(){
return ;
}
}
public class MyInterfaceImplB{
public void myMethode(){
return ;
}
}
你可以做第三个实现
public class MyInterfaceDelegate{
private List<MyInterface> myInterfaceList;
public MyInterfaceDelegate(List<MyInterface> myInterfaceList){
this.myInterfaceList = myInterfaceList;
}
public void myMethode(){
myInterfaceList.forEach(MyInterface::myMethode)
}
}
然后像这样注入它(或使用@Inject):
@Provided
MyInterfaceImplA implA(){
return new MyInterfaceImplA();
}
@Provided
MyInterfaceImplB implB(){
return new MyInterfaceImplB();
}
@Provided
MyInterface interface(MyInterfaceImplA myInterfaceImplA,MyInterfaceImplB myInterfaceImplB){
return new MyInterfaceDelegate(Lists.newArrayList(myInterfaceImplA, myInterfaceImplB));
}
【讨论】: