0

假设:
我有一个 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);
    }
}


我想防止标记依赖: 问题

笔记:

  • ModuleConnectorcom.mycorp.app.sample.integration包装中
  • com.mycorp.app.sample.global可以是每个客户端包。
  • 我想用来com.mycorp.app.sample.integration访问模块api
  • 我有很多 api 方法,所以我更喜欢不使用 命令/策略模式
4

2 回答 2

0

这是一个谜吗?您的代码没有显示依赖项是什么。是编译时依赖还是运行时依赖?什么样的分析产生了你的图表?

使用您提供的信息,无法判断依赖是什么以及如何防止它。

于 2012-08-05T20:18:14.800 回答
0

场景不是很清楚......但我试图给出一些想法

也许您想删除这种直接依赖关系,以便您可以将您的 lib 作为单独的 jar 文件提供...在这种情况下,您可以在“集成”模块中放置一些包装器

应用程序 -> 集成/插件模块 -> 您的库模块

就像,当你调用 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() {}
  }
于 2012-08-06T04:57:55.450 回答