模块之间的循环依赖关系java类
问题描述:
我有两个模块:UI和Core。最后一个驻留业务处理逻辑。在我的第一个实现中,UI模块依赖于Core模块。模块之间的循环依赖关系java类
但是现在我已经在UI模块中为Core实现了websockets,以便向UI/websocket发送消息来更新有关状态更改的UI。
我们在UI模块中有一个Handler类,它可以将消息发送到UI-websocket。 我的问题是:如何访问Core中的Handler类以将消息发送到websocket?
答
如果模块B定义了interface
,并且它提供了模块B可以调用的方法来传递实现接口的回调对象,则模块A可以调用模块B而不依赖于模块B.
假设我已经定义了Foobar库,并且假设Foobar库的状态可能因某些外部事件而改变。如果库的客户想知道的状态的变化,我可以提供一个回调机制:
interface StatusCallback {
void statusChange(Status status);
}
class Foobar {
...
void registerStatusCallback(StatusCallback statusCallback);
...
}
客户端通过创建implments StatusCallback
一个实例,将其提供给图书馆使用它:
Foobar foobar = ...;
statusCallback = new StatusCallback() {
void statusChange(Status status) {
...do something with changed status...
}
};
foobar.registerStatusCallback(statusCallback);
现在,只要发生外部事件并且状态发生变化,库就会调用客户端的方法statusChange(status)
。但是,库源代码不依赖于客户端代码。
你能详细说明一下吗?我不明白太多.. – user5636236
@ user5636236,请参阅上面的我的扩展答案。 –