【问题标题】:Is it a good practice your api bundle depends on another bundle api?您的 api 包依赖于另一个包 api 是一个好习惯吗?
【发布时间】:2015-10-22 09:37:02
【问题描述】:

我将我的服务包和我的 api 包分开。在我的 api 包中,我有一个实体,其中包含来自另一个 api 包的实体。这是一个设计问题还是一个好的做法?

  1. BundleA-api:包含 foo.Foo 接口
  2. BundleB-api:包含 bar.Bar 接口(有一个 Foo 成员)
  3. BundleC-service:导入BundleB-api并提供实现bar.Bar接口的服务

我希望它很清楚;-)

谢谢,

【问题讨论】:

    标签: java api osgi


    【解决方案1】:

    如果您设法使您的 API 保持独立,那总是好的,但这并不总是可行的。所以我不认为依赖另一个 API 总是一件坏事。

    【讨论】:

      【解决方案2】:

      为方便起见,您可能希望分发一个 bundle-all.jar 文件,而不仅仅是单独的文件。

      【讨论】:

        【解决方案3】:

        我们的目标应该是使用基本的 JDK 类型尽可能地保持 API 解耦。但是,有时您确实需要使用另一个抽象或不想重复功能。与设计中的大多数事情一样,它正在寻找相反力量之间的最佳值。在软件中,您希望最小化耦合并最大化内聚。

        最小化 API 耦合的一个技巧是使用 JDK 中的共享类型。整数和字符串 id 在这方面通常工作得很好。例如,在 OSGi enRoute 中,Authentication 服务不返回 UserAdmin 服务的用户对象,但它返回用户的字符串 ID。因此,身份验证服务可以与用户管理服务一起使用,但它不强制要求它。潜在地,也可以使用另一个用户数据库,将选择权留给服务的用户。

        【讨论】:

        • 感谢您的示例
        猜你喜欢
        • 2018-08-09
        • 2020-01-01
        • 2016-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多