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