我一直怀疑在创建包时,我想利用包限制访问但同时又想将类似的类划分到包中。 当您了解包在 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/