Java 包策略

标签 java package

我一直怀疑在创建包时,我想利用包限制访问但同时又想将类似的类划分到包中。 当您了解包在 Java 中不是分层的时,问题就来了:

At first, packages appear to be hierarchical, but they are not. source

假设我在 foo.bar 中定义了一个 API 及其类,只有 API 客户端需要的类被设置为公开。然后我有另一个包,其中包含我在 foo.bar.pojos 定义的 API 中需要的一些内部对象,这些类需要公开以便 foo.bar 可以访问它们,但这意味着 API 客户端也可以访问它们,如果包foo.bar.pojos 被导入。

应该遵循的通用包策略是什么?

最佳答案

我见过两种做法。

第一个是将公共(public) API 和内部类分成两个不同的工件( jar )。文档也是分开的,因此最终用户很容易区分什么是内部的,什么不是。但有时拥有两个 jar、两个源代码树等​​会使事情变得更复杂。

第二个是交付一个 jar,但有一个很好的文档,可以让您知道什么是内部的,什么不是。文本文档可以解释如何使用 API(从而避免谈论内部结构)。并且 javadoc 可以指定一个类供内部使用,因此可以更改。

关于Java 包策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6532726/

相关文章:

java - 条件检查空 hibernate 析取

java - hibernate 搜索。如何从索引中排除实体?

java - 在 JUnit/JPA/Hibernate/Struts 和 Spring 集成测试中保持 session 打开 - 无 session 或 session 关闭 - LazyInitialization 异常

python - 如何从 Python 包的搜索路径中删除系统的 'site-packages'?

python - 为 Python 项目设置 Deb 包 - 数据库 (sqlite3) 设置

r - 在 mac 中保存电影 GraphicsMagick for r

java - MapperRegistry 不知道 Mapper 文件

java - 得到错误的应用程序:dexDebug after add a class model or add a setter in exist model

java - 导入的 maven 项目不显示为 java 项目。显示文件夹

dart - 库写入更多文件