Dagger - 用一个接口触发两个实现
Dagger - Triggering two implementations with one interface
有没有办法将两个实现绑定到一个接口,并通过接口方法调用同时触发两个实现的方法。我想使用两个应用程序进行分析,最好用一个界面触发它们
一个简单的解决方案是使用委托实现。
对于像这样的一个接口和两个实现
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));
}
有没有办法将两个实现绑定到一个接口,并通过接口方法调用同时触发两个实现的方法。我想使用两个应用程序进行分析,最好用一个界面触发它们
一个简单的解决方案是使用委托实现。 对于像这样的一个接口和两个实现
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));
}