JavaAPI设计-内部设计

JavaAPI设计-内部设计,java,api,Java,Api,我正在制作我的第一个API,它从网站获取数据并解析数据。所以有很多网络和解析在里面。我读到API有一个不应该公开的内部包;就像Javadocs一样。所以我的问题是什么应该和不应该放在内部包中。这是我的包装设计,不重要的就省去了 .networkstats .networkstats.model .networkstats.parser 在networkstats包中有一个名为networkstats的类。这是处理和检索所有网络连接的主类。然后它使用解析器包中的类来处理数据。返回一个模型类,该类

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

.networkstats
.networkstats.model
.networkstats.parser
networkstats
包中有一个名为
networkstats
的类。这是处理和检索所有网络连接的主类。然后它使用
解析器
包中的类来处理数据。返回一个模型类,该类保存
Model
包中的数据。我希望包括内部包,因为将有一些类和接口不打算由用户使用

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

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

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

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


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

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


费伦茨

谢谢,那一页确实帮了我的忙。我更了解它,而且这个链接有更多的信息可以帮助我。我听说过OSGI,但不确定它是什么,谢谢,我现在知道我应该像你说的那样在类上以可访问的方式更改它。