敷设渠道
我有2个模块:
app
(申请)box
(图书馆模块)问题
我正在尝试使用app
模块中box
模块的一部分。
问题是app
模块依赖于box
模块,因此我不能指向box
模块,因为这会产生循环依赖。
如何从app
模块获取box
模块方法?
或者
如何通知app
模块中的某个接收器有一些数据可以获取?
修改
我以第3个模块common
结束,该模块保持模块app
和box
的交集。
答案 0 :(得分:6)
您无法直接调用依赖于库的模块。这种依赖会破坏图书馆的目的。但是您可以在Box模块中定义一个接口,该库的哪些客户端必须实现才能正常运行。
实施例: 在Box模块中定义一个接口
interface ThereIsSomeDataToGet(){
void doSomething();
}
在您的应用模块中,您可以致电
Box.registerCallback(new ThereIsSomeDataToGet(){...})
现在在box模块中,你有一个回调你的应用程序模块,没有任何硬依赖,当你有一些新数据库时,你只需要调用
ThereIsSomeDataToGet.doSomething();