【发布时间】:2013-09-27 01:44:40
【问题描述】:
我正在编写一个包含 25 个类的库。其中 4-5 个是公共 api。其他类目前是包私有的。我的问题是我想将它们安排到自己的包中,但当前设置无法做到这一点,因为这样这些类将无法看到彼此。
所以我应该让它们保持原样而不进行安排,还是让它们全部public 以便我重新安排它们?我认为后者不是一个好的解决方案,因为很多类并不打算供最终用户使用,但我不喜欢它们只是转储到根包中,因为它只会增加大小。
java中有没有一种惯用的方法来解决这个问题?
示例:
我有一个名为HexagonalGridBuilder 的类。它是公开的并且是 api 的一部分。同样代表HexagonOrientation,它是一个枚举并保存(FLAT_TOP 和POINTY_TOP)的值和HexagonalGridLayout,它也是一个枚举,并保存六角网格类型的值,如RECTANGULAR 和@ 987654328@。最终用户可以使用这些枚举参数化 HexagonalGridBuilder 对象,该对象返回一个 HexagonalGrid 这是一个接口。
所有实现类都是包私有的,如HexagonalGridImpl 或TriangularGridLayoutStrategy。由于我描述的这个打包问题,我无法将这些类移动到不同的包中而不将它们全部设为public。
【问题讨论】:
-
举个例子。我很确定混合使用受保护和适当的包装可以解决这个问题。
-
我认为,如果一个班级需要以不同于其他人应该能够与之交谈的方式与另一个班级交谈(包括缺乏与之交谈的能力,就像你的情况一样),它们应该在同一个包/命名空间中。
标签: java namespaces package