API的常规包装结构

问题描述

|                                                                                                                   关闭。这个问题是基于意见的。它当前不接受答案。                                                      

解决方法

我认为这些“重复”软件包不是问题。毕竟它们只是包装。使用您的API的开发人员只能看到它们。 此外,开发人员可以访问您的实现类也不是一个问题。 Java本身也是如此:可以使用很多
com.sun
类,但这并不意味着您应该这样做。这使得移植到另一个Java运行时变得困难。 这也取决于项目。如果您使用的是将API与实现完全分开的体系结构,则API的用户将无法访问实现。想到OSGi和Web服务。在这种情况下,您可以创建两个不同的库:实现和API,具体实现取决于API。该API包含对外部用户重要的所有类。这样分离是很容易的。 第三个问题并不真正存在。您可以具有不同的库,这些库为相同的软件包提供类。只要您控制名称空间,并且在同一程序包中没有重复的类,就可以了。一个包只是一个名字,仅此而已。     ,我通常针对这种情况创建两个不同的(月食)项目。一个项目包含核心,另一个项目包含api / interface-classs。核心项目取决于api项目。 我在两个项目中使用相同的包名称。这两个项目是针对两个不同的jar构建的,并且将api jar提供给需要访问(或编写插件)我的应用程序/系统的客户端/开发人员。罐子通常被命名为myapplication.jar和myapplication_api.jar