【发布时间】:2017-06-12 08:39:10
【问题描述】:
我正在寻找不同的方法来防止内部泄漏到 API 中。这是一个巨大的问题,因为一旦这些内部结构泄漏到 API 中;您可能会遇到意外的不兼容问题或内部冻结。
最简单的方法之一就是使用不同的 Maven 模块;一个带有 API 的模块和一个带有实现的模块。这样就不可能从 API 公开实现。
很遗憾,并非所有人都同意这是最好的方法。但是还有其他选择吗?例如使用 checkstyle 或其他“架构检查”工具?
PS:Java 9 对我们来说是不可用的,因为我们即将升级到 Java 8,这将是未来相当长一段时间内支持最低的版本。
【问题讨论】:
-
实际上,将 API 及其实现分成不同的模块是一种常见的做法。还有 OSGi,它可以让您公开特定的包,但不能公开其他包。关于 checkstyle 和类似工具,我想您可以确保某些包(API)不会导入不需要的包(实现)。如果需要,自定义规则很容易实现。违规将导致构建失败。
标签: java api-design