【发布时间】:2015-01-28 11:59:17
【问题描述】:
我刚开始使用dagger 2,之前没有使用过任何其他依赖注入框架。现在我陷入了循环依赖,我不知道如何正确解决它。考虑以下服务器应用程序中的示例,它使用带有 Java NIO 的 Reactor pattern:
我有一个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);
}
}
当新的输入到达时,Handler 会创建Command 对象,在服务器上执行它们,服务器最终会响应客户端。
所以我现在正在做的是在Handler 中手动创建一个Client 对象,并传入一个this 引用,以便能够发送响应:
client = new Client(this);
所以我现在的问题是:设计有问题吗?是否可以解耦Client 和Handler?还是我应该忍受这个而不使用依赖注入everywhere?
感谢您的建议
【问题讨论】:
标签: java dependency-injection dagger-2