2013-10-14 48 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模塊中,並將具體實現保留在當前模塊中?那是對的嗎? –