以我的经验,Java 中类的包私有可见性被证明是多余的。
包私有可见性似乎基于这样一个前提,即一个几乎被另一个类私有使用的类很可能保存在同一个包中。通常情况并非如此。有人在探索改进的访问修饰符/替代机制吗?
尝试使用包私有可见性的问题:
- 我们很想将功能不相关的类放在同一个包中以获得这种好处
使用 public 代替的问题:
- API 被污染。导入库 Jar 后,客户会看到其他几个他无需担心的公共类
- 从编码标准的角度来看,没有简单的方法可以确保开发人员不会在时间紧迫时完成短路调用(短路调用是指绕过层的方法调用(例如从 Servlet 直接到 DAO 绕过豆/BO)
当前的解决方法:
- 为了阻止短路调用,我们通常将应用程序的不同部分打包到几个 JAR 中,并确保每个构建的构建环境中只有相应的 JAR 可用。(例如,在编译 Swing 客户端类时,server.jar 将不可用。只有客户端类和 common.jar 可用。)
问题:
- 想出一个新的可见性修改器/替代方案不是很有用吗?
- 这些方面的东西是否已经在进行中?
- 像 Spring/Guice 这样的框架是否足以替代?