根据我在不同地方阅读的最佳实践(一个示例),将 API 和实现分开是理想的,但也只在 API 包中导出包而不是在实现包中导出包,而实现包应该注册为服务。
但是我仍然不清楚你应该如何扩展一个具体的类。在我看来,能够做到
class Child extends com.foo.ParentImpl {
}
impl 捆绑包需要公开com.foo
AFAIU只有两种方式
- 导出具体实现,但这违反了最佳实践
- 永远不要从不同的包中扩展类。即将所有类型层次结构捆绑在一起。在我看来,这种方式违背了模块化框架的意义
那么这样做的正确方法是什么?