【发布时间】:2015-08-30 12:48:11
【问题描述】:
即。我有一个 GUI 包和一个 Logic 包。
如何防止逻辑类导入 GUI 类?从事同一项目的其他人(或我自己)可能会这样做,我想阻止这种情况。
例如,解决方案可以是 JUnit 中的检查,如果完成则失败,或者运行时检查会引发异常。类似的东西,但是怎么做呢?
【问题讨论】:
标签: import package classloader rule
即。我有一个 GUI 包和一个 Logic 包。
如何防止逻辑类导入 GUI 类?从事同一项目的其他人(或我自己)可能会这样做,我想阻止这种情况。
例如,解决方案可以是 JUnit 中的检查,如果完成则失败,或者运行时检查会引发异常。类似的东西,但是怎么做呢?
【问题讨论】:
标签: import package classloader rule
您可以使用 JDepend 或 DependencyFinder 或 Degraph 编写此类测试。
Degraph 是三个工具中唯一明确旨在为此类案例实际编写测试的工具。此外,AFAIK JDepend 没有在最近的 Java 版本中找到所有依赖项(如注释中提到的类)。
我是 Degraph 的作者,所以我显然有偏见。
【讨论】:
我创建了JabSaw 项目。它允许您通过使用带注释的类来定义模块并表达模块之间的关系。默认情况下,一个模块包含单个包中的所有类。可以使用 Maven 插件、命令行或单元测试检查限制。这应该可以解决您的问题。
【讨论】:
我想到的一个解决方案是将 GUI 类包设为私有。虽然不能只隔离一个包,说只有Logic类不能使用GUI,其他的可以。
【讨论】: