S1l*_*0rm 6 java dependency-injection dagger-2
我刚刚开始使用dagger 2并且之前没有使用任何其他依赖注入框架.现在我陷入了循环依赖,我不知道如何正确解决它.请考虑服务器应用程序中的以下示例,该应用程序将Reactor模式与Java NIO一起使用:
我有一个Handler对象附加到选择键,当新信息到达网络时执行该选择键:
class Handler implements Runnable {
  Server server;
  Client client;
  public void run {
    // static factory method that eventually calls a method on server, passing in 'client' as argument
    Command.parse(input).execute(server, client); 
  }
  public void send(String string) {
    // enqueu string and inform reactor about interest in sending
  }
}
本Client类包含有关连接的客户端的一些状态.所有连接的客户端都在Server类中.
class Client {
  Handler h;
  public send(String response) {
    h.send(response);          
  }
}
当新输入到达时,处理程序创建Command对象,在服务器上执行它们,服务器最终将响应客户端.
所以我现在正在做的是Client手动创建一个对象Handler,传入一个this引用,以便能够发送响应:
client = new Client(this);
所以现在我的问题是:设计有问题吗?是否有可能去耦Client和Handler?或者我应该忍受这个并且不使用依赖注入everywhere?
我感谢你的建议
我意识到我真正想要解决的不是打破Client和之间的依赖关系Handler,而是使用依赖注入而不是new运算符。
我正在寻找的解决方案:将 a 注入ClientFactory到 的构造函数中Handler并使用clientFactory.create(this)它来创建一个Client对象。出色的AutoFactory库允许您通过简单的注释创建这样的工厂@AutoFactory。创建的类的构造函数会自动用 注释@Inject。
| 归档时间: | 
 | 
| 查看次数: | 2897 次 | 
| 最近记录: |