Frage

Ich mache eine Java-Anwendung.

Das sind meine Dateien so weit:

Person Schnittstelle.

hat eine setName (String aName) Methode

PersonImpl

Die Umsetzung der Person Schnittstelle.

PersonFactory Schnittstelle

hat eine createPerson ()

PersonFactoryImpl

Die Umsetzung der PersonFactory Schnittstelle.

Die Sache ist, ich war bereit, eine Methode getAll () hinzufügen, die eine Sammlung von Personen gibt, und ich bin nicht sicher, wo es zu platzieren.

Ich dachte, es als eine statische Methode zu PersonImpl oder PersonFactoryImpl Zugabe, aber ich bin nicht sicher.

Welches ist der beste Weg?

Vielen Dank für das Lesen!

War es hilfreich?

Lösung

Wenn eine andere Implementierung von PersonFactory vorgesehen ist, sollte es auch eine #getAll bieten müssen? Wenn ja, gehört es an der Schnittstelle ... und dann kann es nicht eine statische Methode in Java sein.

Da ist es eine Funktion Ihres PersonFactory oder sollte eine Abstraktion für Ihren Speichermechanismus als auch dort sein? Wenn ja, eine PersonRepository Schnittstelle, deren Implementierungen akzeptieren eine PersonFactory und bietet eine natürliche Heimat für getAll-Typ-Funktionalität scheint besser geeignet. Wenn nicht, dann als Mitglied des Betons PersonFactory geeignet sein könnte genug ...

Andere Tipps

Der logische Weg wäre es als statische Methode zum PersonFactory hinzuzufügen. Das ist die Klasse, die Ihre Person Objekte erzeugt, und wenn es Verweise auf alle generierten Objekte hält, sollte es in der Lage Ihre getAll() API zu beantworten.

Offensichtlich ist es nicht sinnvoll für jedes Person Objekt bewusst anderer ähnlicher Objekte zu sein, so dass diese Methode dort nicht hingehört.

EDIT: Angesichts der Tatsache, dass sie auf einer Datenbank befinden, könnte es klug sein, die PersonFactory zu entkoppeln (dem Job Person Objekte zu erstellen ist), von einem PersonRepository, das tatsächlich sein wird, Zugriff auf die Datenbank (oder was auch immer persistency Sie haben) und Person Objekte zurück.

Es scheint mir peinlich, dass die gleiche Klasse verantwortlich ist sowohl für Objekte sowie das Abrufen sie aus einer Datenbank. Davon abgesehen, wenn Ihre Anwendung erfordert diese enge Kopplung, es könnte akzeptabel sein.

Die Fabrik ist verantwortlich Instanzen von Personen Verwaltung, so dass der richtige Ort, um es zu setzen. Darüber hinaus sollte es nicht statisch sein wie createPerson() ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top