【问题标题】:Java API Design - Internal DesignJava API 设计 - 内部设计
【发布时间】:2012-04-25 20:54:43
【问题描述】:

我正在制作我的第一个 API,它可以从网站获取数据并对其进行解析。所以里面有很多网络和解析。我读到 API 有一个不应该公开的内部包;就像在 Javadocs 中一样。所以我的问题是什么应该和不应该放在内部包中。这是我的包装设计,我省略了不重要的。

.networkstats
.networkstats.model
.networkstats.parser

networkstats 包内有一个名为NetworkStats 的类。这是处理和检索所有网络连接的主要类。然后它使用parser 包中的类来处理数据。在它返回一个模型类之后,该类将数据保存在model 包中。我想包含内部包,因为会有一些类和接口不打算由用户使用。

例如,我想创建一个类来处理所有网络连接,以便其他类如NetworkStats 可以访问它。我想这样做的原因是因为我不想在其他类中复制代码,因为它可以在一个地方。当然我不希望其他用户使用这个类,所以我会把它放在内部包中?我也会把我的parser 包放在内部包中。所以我的主要问题是,您是否将不打算公开使用的类和接口放在内部包中?我知道他们可以仍然访问它。

.networkStats.internal.DataManager // class that handles network connections
.networkStats.internal.parser

【问题讨论】:

    标签: java api


    【解决方案1】:

    您可能会发现此 Java API 设计清单很有帮助。第一部分是关于包装设计。

    http://theamiableapi.com/2012/01/16/java-api-design-checklist/

    费伦茨

    【讨论】:

    • 谢谢,那页真的帮了我大忙。我知道更好地理解它,而且该链接包含更多对我有帮助的信息。
    【解决方案2】:

    首先我想说的是子包和其他包一样,普通java中没有私有包这样的东西,如果你想要那种特性你必须使用OSGi

    也就是说,如果你想保护类不被访问,只需删除类名上的 public,只保留“API”类,即你的用户将访问的类(将用户称为开发人员使用框架)。

    您创建的包越多,您必须公开的“私有功能”就越多。

    【讨论】:

    • 我听说过 OSGI,但不太确定它是什么,谢谢,我现在知道我应该像你说的那样更改类的可访问性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2016-03-06
    • 2016-06-06
    • 2017-03-12
    相关资源
    最近更新 更多