将项目分成两个独立项目有什么意义?

时间:2014-09-10 12:14:28

标签: java

很多时候,我看到人们将项目分成两个独立的项目,如截图:

enter image description here

分离Ingot和IngotAPI的重点是什么,而不是将它们放在同一个项目中,因为它们总是被编译在一起?

5 个答案:

答案 0 :(得分:1)

这样做的一个原因是实现可以互换。

想象一下,有两个客户使用您的应用程序。它们对于如何做某事有不同的要求(例如算法不同)但结果的类型是相同的。在这种情况下,客户端代码应仅直接使用API​​,并且不依赖于任何实现。在构建期间,您可以指定应该使用哪个实现。

使用此解决方案:

  • 如果有任何新客户端到达,您将轻松创建新需求的实现,而无需更改API或客户端代码。它使您的旧代码更具可重用性。
  • 如果仅在实现中进行了更改,则不必重建API或客户端。它节省了开发人员在工作期间的时间。
  • 在测试期间,您可以为业务逻辑的某些部分提供模型实现

答案 1 :(得分:1)

有几种情况。

需要或希望API 解耦来自(其中一个)其实现。使用 Java SPI (服务提供程序接口),您只提供一个接口,针对哪个客户端应用程序。然后,java SPI提供查找以使用其中一种可能的实现。用于XML解析器。类似于JDBC。解耦API意味着如果API保持不变,则无需重新编译客户端,但实现已更改。

通常,有几个项目允许将每个项目都视为模块,这是一个导入其他模块的指定列表并形成分层层次结构的单元。这可以为软件系统提供更高质量,无需来回导入。下一代java将获得模块。

答案 2 :(得分:0)

首先使代码更易于重用。通过在不同的项目中打包不同的功能,可以更容易地找到您想要转移到另一个项目的功能(在这种情况下,您可以将整个IngotAPI导出到新项目)。 第二个测试。当每个项目将其自己的单元测试分开时,以及检查两个项目之间的集成的测试,更容易控制测试结果。

例如,如果IngotAPI开发得很好,它就不应该对Ingot项目有任何依赖性。这意味着如果您对Ingot项目进行任何更改,您不需要独立测试IngotAPI,因为它不会受到影响(高内聚力),您只需要测试Ingot,以及ingot使用IngotAPI的位置。 / p>

答案 3 :(得分:0)

IngotAPI似乎应该很容易从其他项目中引用。 也许它将来会在其他地方使用。

最后它并不重要,因为您也可以将其他项目中的类复制到最近的项目中。

答案 4 :(得分:0)

主要原因是,当您实施API时,您希望将其分发给潜在客户。通过划分两个(或更多)项目,您只能分发接口和业务对象,并自己保留实现。

这样,您就不必重新分配任何实施变更。