2012-04-25 14 views
7

ich meine erste API machen, die Daten erhält und analysiert es von Websites. Es gibt also viel Netzwerk und Parsing. Ich habe gelesen, dass APIs interne Pakete enthalten, die nicht öffentlich sein sollten. wie in Javadocs. Also meine Frage ist, was sollte und sollte nicht in das interne Paket gelegt werden. Hier ist mein Verpackungsdesign, ich lasse die unwichtigen weg.Java API-Entwurf - Interner Aufbau

.networkstats 
.networkstats.model 
.networkstats.parser 

Innen networkstats Paket gibt es eine Klasse namens NetworkStats. Dies ist die Hauptklasse, die alle Netzwerkverbindungen verarbeitet und abruft. Es verwendet dann die Klassen innerhalb des parser-Pakets, um die Daten zu verarbeiten. Nachdem es eine Model-Klasse zurückgegeben hat, die die Daten in dem model-Paket enthält. Ich möchte das interne Paket einschließen, da einige Klassen und Schnittstellen vorhanden sind, die nicht von den Benutzern verwendet werden sollen.

Zum Beispiel möchte ich eine Klasse die Handles alle Netzwerkverbindungen machen, damit die anderen Klassen wie NetworkStats darauf zugreifen können. Der Grund, warum ich das tun möchte, ist, weil ich den Code in anderen Klassen nicht kopieren möchte, wenn es an einem Ort sein kann. Natürlich möchte ich nicht, dass andere Benutzer diese Klasse verwenden, also würde ich sie in das interne Paket einfügen. Ich würde auch mein parser Paket in das interne auch setzen. Meine Hauptfrage ist also, dass Sie Klassen und Interfaces, die nicht für die Öffentlichkeit bestimmt sind, in das interne Paket einfügen. Ich weiß, sie kann immer noch darauf zugreifen.

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

Antwort

10

Sie könnten diese Java-API-Design-Checkliste hilfreich finden. Der erste Abschnitt befasst sich mit dem Verpackungsdesign.

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

Ferenc

+0

Danke, diese Seite hat mir wirklich geholfen. Ich weiß es besser zu verstehen, und dieser Link hat viel mehr Informationen, die mir helfen werden. –

+0

Ich habe die Checkliste gelesen und ich mag IR +1 dafür –

3

zunächst einmal würde Ich mag Sub-Pakete sagen, sind die gleichen wie jedes andere Paket, gibt es nicht so etwas wie Private-Pakete in regelmäßigen java, wenn Sie diese Art von Funktion möchten Sie haben werden verwenden OSGi

das heißt, wenn Sie vor dem Zugriff schützen Klassen wollen, nur um die Öffentlichkeit über den Klassennamen zu entfernen, und lassen Öffentlichkeit nur die „API“ Klassen, das ist, werden die Klassen, die Ihre Benutzer zugreifen (Aufruf Benutzer die Entwickler, die das Framework verwendet).

Je mehr Pakete Sie erstellen, desto mehr "private Funktionalität" müssen Sie bereitstellen.

+0

ich über OSGI gehört haben, aber nicht wirklich sicher, was es ist, Danke, ich weiß jetzt, dass ich auf den Klassen der zugreifbar ändern sollte wie Sie gesagt haben. –