Java API设计 - 内部设计

时间:2012-04-25 20:54:43

标签: java api

我正在创建第一个获取数据并从网站解析数据的API。因此,它有很多网络和解析。我读到有关API的内部包不应该是公开的;就像在Javadocs。所以我的问题是应该和不应该放在内部包中。这是我的包装设计,我忽略了不重要的包装设计。

.networkstats
.networkstats.model
.networkstats.parser

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

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

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

2 个答案:

答案 0 :(得分:10)

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

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

Ferenc的

答案 1 :(得分:3)

首先,我想说子包与任何其他包一样,普通java中没有私有包这样的东西,如果你想要那种功能你必须使用OSGi

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

您创建的软件包越多,您需要展示的“私有功能”就越多。