有什麼選項可以用Java定義到Java庫的公共接口。用Java定義公共庫接口
例如,我經常發現事情是公開的,因爲庫中的另一個包需要它們(雖然仍有一個公共基礎包,例如com.stackoverflow.mylib),所以它們不能具有包訪問級別,並且通常人們並不想要大量的包(這似乎是人們使用Spring堅持要有單獨的controller/service/model/impl/etc包,導致一個單獨的「特性」被迫跨越很多包,當說一個給定的服務可能是一個完全內部的實現細節而不是外部使用......)。
因此,理想的目標是讓我向第三方提供的Jar清楚地說明這些東西是不會被使用的,理想情況下根本沒有它們可用(不存在於API jar中),這樣他們不可能使用和編譯這些內部對象/方法。
對於那些只能從某種工廠(例如提供的Spring Bean)中獲得的對象來說,更爲理想的方法是防止直接從它們的代碼或自定義bean實例化(這可能會留下一些未來的,尚不存在的屬性升級後未初始化)。
我知道目前兩家正規方法是:
- 在一些項目中我曾上,有一個API包(如com.stackoverflow.mylib.api),而規則是隻這個包的內容可以由外部用戶直接訪問。
- 在我工作過的其他一些項目中,有一些自定義屬性,例如@PublicSDK標記公共對象和方法(我認爲一些額外的東西,以確保只標記的東西在公開分發的javadoc和api jar)。
發表評論或做/建議編輯不只是近距離投票......我想知道什麼技術選項(即列出任何相關的專業人士的意見)爲給定的情況(圖書館代碼)。 – 2014-10-01 23:06:27