2012-04-25 37 views
7

我正在製作我的第一個獲取數據並從網站解析數據的API。所以有很多網絡和解析。我閱讀了API的內部包不應該公開的內容;像在Javadocs。所以我的問題是內部包裝應該和不應該包含哪些內容。這是我的包裝設計,我將不重要的包裝留下。Java API設計 - 內部設計

.networkstats 
.networkstats.model 
.networkstats.parser 

networkstats包有一個名爲NetworkStats類。這是處理和檢索所有網絡連接的主要類。然後它使用parser包內的類來處理數據。它返回一個Model類,該類包含model包內的數據。我想包含內部包,因爲會有一些類和接口不會被用戶使用。

例如,我想讓一個類處理所有的網絡連接,所以其他類如NetworkStats可以訪問它。我想這樣做的原因是因爲我不想在其他類中複製代碼,因爲它可能在一個地方。當然,我不希望其他用戶使用這個類,所以我會把它放在內部包中?我也會把我的parser包裝放在內部。所以我的主要問題是,你是否把內部軟件包中沒有用於公共的類和接口?我知道他們可以仍然可以訪問它。

.networkStats.internal.DataManager // class that handles network connections 
.networkStats.internal.parser 

回答

10

您可能會發現這個Java API設計清單很有用。第一部分是關於包裝設計。

http://theamiableapi.com/2012/01/16/java-api-design-checklist/

費倫茨

+0

謝謝,該頁面真的幫了我。我知道更好地理解它,並且鏈接有更多的信息可以幫助我。 – 2012-04-25 23:54:08

+0

我已閱讀清單ans我喜歡ir +1 – 2012-04-26 03:35:50

3

首先我想說的子包是一樣的任何其他程序包,有沒有這樣的事情在普通的Java包私有,如果你想的那種功能,你必須使用OSGi

也就是說,如果您想要保護類不被訪問,只需刪除公共類名稱,並且只公開「API」類,即,您的用戶將訪問的類(調用用戶使用框架的開發人員)。

您創建的軟件包越多,您必須公開的「私有功能」就越多。

+0

我聽說過OSGI,但真的不知道它是什麼,謝謝,我現在知道,我應該改變通俗易懂的課程像你說的。 – 2012-04-25 23:57:21