我刚开始使用dagger 2,之前没有使用过任何其他依赖注入框架。现在我陷入了循环依赖,我不知道如何正确解决它。考虑一个服务器应用程序中的以下示例,它使用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);
}
}
当新的输入到达时,Handler 会创建Command
对象,在服务器上执行它们,服务器最终会响应客户端。
所以我现在正在做的是Client
手动创建一个对象Handler
,传入一个this
引用,以便能够发送响应:
client = new Client(this);
所以我现在的问题是:设计有问题吗?是否可以解耦Client
和Handler
?还是我应该忍受这个而不使用依赖注入everywhere
?
我很欣赏你的建议