Welcher Name ist mehr richtig in meinem Fall: Manager oder Fabrik (oder etwas anderes)?

StackOverflow https://stackoverflow.com/questions/1825286

  •  22-07-2019
  •  | 
  •  

Frage

Ich habe nächsten Code:

PhotoFactory factory = PhotoFactory.getFactory (PhotoResource.PICASA);
PhotoSession session = factory.openSession (login, password);
PhotoAlbum album = factory.createAlbum ();
Photo photo = factory.createPhoto ();
album.addPhoto (photo);
if (session.canUpload ()) {
   session.uploadAlbum (album);
}
session.close ();

Ich bin nicht sicher, dass ich richtige Namen gewählt habe. Es ist nicht so wichtig, aber ich bin einfach neugierig, was Sie in meinem Fall entschieden. Eine andere Version ist Manager:

PhotoManager manager = PhotoManager.getManager (PhotoResource.PICASA);
PhotoSession session = manager.openSession (login, password);
PhotoAlbum album = manager.createAlbum ();
Photo photo = manager.createPhoto ();
album.addPhoto (photo);
if (session.canUpload ()) {
   session.uploadAlbum (album);
}
session.close ();

UPD: Ich habe gerade nächstes Beispiel bei Hibernate javadocs gefunden:

 Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     //do some work
     ...
     tx.commit();
 }

Ist das ein Name Fehler?

War es hilfreich?

Lösung

Bei einem sehr hohen Niveau, würde ich es nenne eine Fabrik, wenn es für die Erstellung von Instanzen von Klassen nur verantwortlich ist; und ein Manager, wenn es muss die laufende Existenz von Objekten zu überwachen, und wie sie sich auf andere Aufgaben, etc.

In dem Code-Schnipsel Sie haben geschrieben Sie nur Objekte erstellen und somit meiner Meinung nach, ist ab Werk ein passender Name. Obwohl Sie im Auge, was die konzeptionelle Verantwortung der Klasse tragen sollen und ob sie vielleicht in Zukunft weiter auszubauen.

Das heißt, würde ich klassisch eine Fabrik erwarten nicht über das Erstellen von Sitzungen selbst zu kümmern haben, sondern Sitzungen in ihre createFoo Anrufe weitergeleitet haben je nach Bedarf, also gibt es definitiv einige Fudge Faktor wie die Dinge sind eingerichtet. Ich denke, ich persönlich würde verantwortlich eine andere abstrakte Entität hat Sitzungen für das Erstellen, und diese dann in die PhotoFactory passieren.

Andere Tipps

würde ich die zweite Lösung (Manager) wählen, da Objekte mit ‚Factory‘ enden im allgemeinen Implementierungen der Fabrik Muster betrachtet werden, die im wesentlichen neuen Instanzen von Objekten erstellt. Dies ist nicht der Fall in Ihrem Beispiel, da es sich um eine Sitzung für einen bestimmten Dienst verwaltet.

Was in diesem Beispiel ist schön ist, dass Ihr erstes statischer Methodenaufruf getManager in der Tat in der Tat ist eine Fabrik, da es Fälle von Manager Objekten erstellt.

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