我的内部API类应该都在一个包中吗?

Chr*_*ris 9 java api

我正在努力打包API以供公众使用.因此,我试图限制只暴露于我希望公开和可支持的方法.当然,在这下面有许多有限的访问方法.

麻烦的是我有很多内部代码需要访问这些受限制的方法而不公开这些方法.这会产生两个问题:

  • 我不能创建接口来在类之间进行通信,因为这会使我的内部方法公开.
  • 除非我将大部分内部类放在同一个包中,否则我无法访问受保护的或默认的方法.

所以,我有大约70或80个内部类在干净隔离的包中但是具有过度宽松的访问修饰符.你会说单个包是两个邪恶中的较小者还是有更好的方法来掩盖我的内部方法,同时保持更细粒度的包?

我有兴趣在这里找到最好的做法.

我已经意识到了这一点

Jef*_*rod 7

您的问题有两种解决方案,不涉及将所有类保留在同一个包中.

第一种是使用(Practical API Design,Tulach 2008)中描述的Friend Accessor/Friend Package模式.

第二是使用OSGi.有文章在这里解释的OSGi是如何实现这一点.

相关问题:1,2,3,和4.