根据我在不同的地方(one example)阅读过的最佳实践,理想的是分离API和实现,但也仅仅导出API包中的包而不是实现包中的包,应该改为注册为服务。osgi继承的实现导出
但是我还不清楚你应该如何扩展一个具体的类。在我看来,要能够做到
class Child extends com.foo.ParentImpl {
}
的IMPL捆绑将需要公开com.foo
AFAIU只有两种方式
- 出口的具体实施,但是这违反了最佳做法
- 永远不要从不同的包中扩展类。即将所有类型的层次结合在一起。在我看来,这种战略模块化框架的观点是错误的
那么这样做的正确方法是什么?
谢谢尼尔。我也同意你的看法,继承被高估了 – Hilikus