回答
幾個案例的某些部分。
需要或希望使API 從其實施(其中之一)解耦。使用Java SPI(服務提供者接口),您只需提供一個接口,針對哪個客戶端應用程序。然後,java SPI提供查找來使用其中一種可能的實現。用於XML解析器。類似於JDBC。將API解耦意味着如果API保持不變,則不需要重新編譯客戶端,但實現已更改。
通常有幾個項目允許考慮每個項目模塊,一個單元,導入其他模塊的指定列表,並形成一個分層的層次結構。這可以爲軟件系統提供更高的質量,無需來回進口。下一代Java將獲得模塊。
首先使代碼更加可重用。通過在不同的項目中打包不同的功能,可以更容易地找到想要傳送到另一個項目的功能(在這種情況下,您可以將整個IngotAPI導出到新項目中)。 第二次測試。當每個項目將自己的單元測試分開時,保持控制測試結果要容易得多,而不是檢查兩個項目之間的集成的測試。
例如,如果IngotAPI發展良好,則不應該對Ingot項目有任何依賴性。這意味着,如果您對Ingot項目進行了任何更改,則不需要獨立測試IngotAPI,因爲它不會受到影響(高內聚性),您只需測試Ingot以及Ingot使用IngotAPI的位置。
IngotAPI似乎應該很容易從其他項目中引用。 也許它會在未來的其他地方使用。
最後它並不重要,因爲您也可以將您的課程從其他項目複製到最近的課程中。
主要原因是當你實現一個API時,你想把它分發給潛在的客戶端。通過分成兩個(或更多)項目,您只能分配接口和業務對象,併爲自己保留實現。
通過這種方式,您不必在任何實施變更上重新分配。
這樣做的一個原因是實現可以互換。
想象一下,您有兩個客戶使用您的應用程序的情況。他們對於如何做某事都有不同的要求(如算法不同),但結果的類型是相同的。在這種情況下,客戶端代碼應該只能直接與API協同工作,而不依賴任何實現。在構建期間,您可以指定應該使用哪個實現。
有了這個解決方案:
- 如果有新的客戶端到達,你會很容易地創建新的要求,實現在不改變API或客戶端代碼。它使您的舊代碼更加可重用。
- 如果僅在實施中進行了更改,則不必重新構建API或客戶端。它可以節省開發者在工作中的時間
- 在測試過程中,你可以提供一個實現與模擬UPS的業務邏輯
- 1. 我應該將這個Django項目分成兩個項目嗎?
- 2. 獨立EXE項目
- 3. Django項目和獨立Python項目
- 4. 將Android項目轉換爲AspectJ項目(對於MonkeyTalk)有什麼意義
- 5. 什麼是算法將一組項目分解爲3個獨立的組?
- 6. GitHub - 分享 - 爲什麼有兩個項目,它們是什麼意思?
- 7. 獨立java項目的log4j
- 8. 項目完成後實施TDD有什麼意義嗎?
- 9. 如何將條目中的項目拆分爲兩個項目?
- 10. 是否正確將一個項目拆分爲兩個獨立的MVVM子項目
- 11. xcode中項目/目標的單獨設置是什麼意思?
- 12. Python:將列表中的一個項目變成兩個項目
- 13. Maven的Tomcat集成項目具有多個獨立服務
- 14. 壓縮機項目獨立?
- 15. Xtext項目JDT獨立
- 16. 將java maven項目組件提取爲獨立項目
- 17. 爲什麼我不能刪除這個項目?沒有意義
- 18. 在兩個獨立的端口上有兩個項目的同源策略
- 19. 將來自兩個獨立列表的兩個項目鏈接在一起。 python
- 20. 從一個.Net Core項目創建兩個獨立的exes?
- 21. 爲什麼帶滾動條的列表將一個項目分成兩行
- 22. Git將兩個單獨的項目/ git repos合併到一個主項目中?
- 23. eclipse項目中junit和source的兩個獨立JRE
- 24. 在兩個獨立項目上嵌套的Jira搜索
- 25. Simplemembership ASPXAUTH cookie在兩個獨立的Web項目上驗證
- 26. java項目的兩個獨立編譯版本
- 27. 獨立於的WinForms ListView的「所選項目」和「重點項目」
- 28. 將一個獨立的項目合併成一個更大的項目而不會丟失歷史
- 29. Maven - 製作可以獨立於其父項目的子項目
- 30. 在多個項目中集成獨立的JPA圖層
也許你可以單獨分發它們,如果其他項目只需要其中一個例如 – Leo 2014-09-10 12:17:15
[增加模塊性](http://en.wikipedia.org/wiki/Modular_programming)。如果不知道這個特定項目的任何內容,Core和API模塊通常具有不同的功能。也許這個問題可能更適合[Programmers.SE](http://programmers.stackexchange.com/)? – blgt 2014-09-10 12:28:31
這不是一個基於意見的問題。 – Andres 2014-09-10 13:04:58