假设:
我有一个Java / Android模块化库,可以像这样设置:
package com.mycorp.app.sample.integration;
public class ModuleConnector {
public static final LogcatLogger LOGCAT_LOGGER
= new LogcatLoggerImpl.Configurator("TEST")
.verbosity(LogcatLoggerImpl.Verbosity.VERBOSE)
.replace("ApiDesign", "Design")
.replace("Sample", "Sample")
.createInstance();
public static final JsonWebservice GET_INFORMATION_WEBSERVICE
= new JsonWebserviceImpl.Configurator()
.logger(LOGCAT_LOGGER)
.enableCaching(true)
.endpoint("http://test.com")
.createInstance();
}
的问题:
当前依赖关系图显示:
添加此代码后显示如下
package com.mycorp.app.sample.global;
public class G extends Application {
static {
ModuleConnector.GET_INFORMATION_WEBSERVICE.request(null);
}
}
我想防止明显的依赖:
备注:
ModuleConnector
位于com.mycorp.app.sample.integration
包com.mycorp.app.sample.global
可以是每个客户端包。com.mycorp.app.sample.integration
来访问模块
的API 答案 0 :(得分:0)
这是一个谜题吗?您的代码不显示依赖项。是编译时还是运行时依赖?什么样的分析产生了你的图表?
根据您提供的信息,无法确定依赖关系是什么,以及如何防止它。
答案 1 :(得分:0)
情景不是很清楚......但我想提出一些想法
也许你想要删除这个直接的依赖关系,这样你就可以把你的lib作为单独的jar文件提供......在这种情况下你可以把一些包装器放在“集成”模块中
App - >集成/插件模块 - >你的图书馆模块
就像,当你调用ModuleConnector类时,你需要在静态方法中初始化它,所以你的开发人员必须知道,“在使用ModuleConnector之前,我必须用静态方法初始化它......我不能忘记“....如果想要删除这种依赖,那么你可以提供
package com.mycorp.app.sample.integration;
Class ApplicationModuleConnector {
ModuleConnector connector;
static {
//do something
}
//this method will be called by you developer, he need not to bother about init() of ModuleConnector
public invokeWebservice() {}
}