2013-10-14 50 views
6

父api-impl项目结构对我来说是一种新的东西。 我们的Java Maven项目结构是这样的:独立API和实施项目结构

> com.sample.myproject 
> com.sample.myproject.api  
> com.sample.myproject.impl 

我的问题是:

  1. 如何在它们相互连接的方式在Eclipse中创建这样的项目呢?

  2. 什么时候这种结构是明智的?

  3. 有没有我可以参考的网站或参考资料,讨论这种结构?也许是教程或指南?

回答

1

1)在eclipse中,你创建3个项目并为maven管理创建一个pom.xml文件。在这之后,你应该:

  • 父取决于API
  • IMPL取决于父母和API

这样的日食m2eclipse插件将项目相互连接。

2)如果您需要更改定义的API的整个实现,那么只有这个项目结构是可取的。它允许您轻松地将另一个jar与另一个实现放在应用程序中,而不需要修改任何java代码。当然,它只适用于只涉及API的情况,而不是实现。它可以用EJB或Spring来完成。

3)我想不起任何教程或网站,对不起。

2

我觉得它可能会更有意义回答您按相反的顺序问题...

既然你有一个API,该Facade Data Pattern可能是一个好点开始。这种模式的目的是从根本上提供一个外部用户可以连接的接口。

当你想公开一系列函数(API)时,通常需要这种类型的结构,而不会泄露你实际执行这些函数时的实际情况。因此,例如,您只需向用户公开public BigDecimal calculateTax(BigDecimal amount, double percentage),而不显示如何执行方法。

最后,这是我会怎么做:

  • com.sample.myproject将是我的核心项目并在我会把所有的核心功能,例如对象的持久性。

  • com.sample.myproject.api将基本上是一个项目Interfaces和我想公开的其他事情。

  • com.sample.myproject.impl将通过使用核心项目和一些额外的逻辑来实现上述两个项目以公开哪些API层可用。

+0

纠正我如果我错了。如果我想为具有服务,逻辑和数据访问层的应用程序创建一个API模块。只有服务层中的接口将成为API模块的一部分,因为它是暴露给客户端的唯一层。作为逻辑和数据访问层一部分的接口将保留在实现模块中。我了解这是否正确? –

+0

@MeenaChaudhary:API层还将包含API生成或需要的任何请求/响应对象。 – npinti

+0

您的意思是服务层使用的传递对象作为请求或响应对象?截至目前我的传输对象是具有getter/setter方法的具体类。所以我需要为我的传输对象创建接口并将它们放入API模块中,并将具体实现保留在当前模块中?那是对的吗? –