Question

J'ai le code suivant:

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 ();

Je ne suis pas sûr d'avoir choisi le bon nom. Ce n'est pas si important mais je suis juste curieux de savoir ce que vous avez choisi dans mon cas. Une autre version est 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: Je viens de trouver l'exemple suivant sur javadocs en veille prolongée:

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

Est-ce une erreur de nommage?

Était-ce utile?

La solution

À un niveau très élevé, je l'appellerais une Factory si ce n'est que la création d'instances de classes; et un responsable s’il doit surveiller l’existence continue d’objets et leur relation avec d’autres objets, etc.

Dans les extraits de code que vous avez publiés, vous ne créez que des objets et, à mon avis, Factory est un nom approprié. Vous devez cependant garder à l’esprit les responsabilités conceptuelles de la classe et s’il est possible qu’elles se développent à l’avenir.

Cela dit, je m'attendrais généralement à ce qu'une usine ne se préoccupe pas de créer des sessions elle-même, mais plutôt que les sessions soient passées dans leurs appels createFoo comme requis, il y a donc certainement un facteur de fudge lorsque les choses sont définies up. Personnellement, je pense que j'aurais une autre entité abstraite responsable de la création de sessions, puis de la transférer dans PhotoFactory.

Autres conseils

Je choisirais la deuxième solution (gestionnaire), car les objets qui se terminent par «Usine» sont généralement considérés comme des implémentations du modèle d’usine, qui crée essentiellement de nouvelles instances d’objets. Ce n'est pas le cas dans votre exemple, car il gère une session pour un service particulier.

Ce qui est bien dans cet exemple, c’est que votre premier appel de méthode statique getManager est en fait une fabrique, car il crée des instances d’objets Manager .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top