【问题标题】:Dagger - Triggering two implementations with one interfaceDagger - 用一个接口触发两个实现
【发布时间】:2021-09-16 10:03:36
【问题描述】:

有没有办法将两个实现绑定到一个接口,并通过接口方法调用同时触发两个实现的方法。我想使用两个应用程序进行分析,最好用一个界面同时触发它们

【问题讨论】:

标签: android kotlin dagger-2 dagger-hilt


【解决方案1】:

一个简单的解决方案是使用委托实现。 对于这样的一个接口和两个实现

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2013-11-23
    • 2020-05-22
    • 2023-03-06
    • 2017-08-18
    • 1970-01-01
    • 2013-12-01
    相关资源
    最近更新 更多