2009-12-01 2 views
0

J'ai le code suivant:Quel nom est le plus correct dans mon cas: manager ou usine (ou autre chose)?

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 que je l'ai choisi le nom correct. 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 responsable:

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 par exemple à côté javadocs hibernate:

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

Est-ce une erreur de nom?

Répondre

1

À un très haut niveau, je l'appellerais une usine si elle est seulement responsable de la création d'instances de classes; et un gestionnaire s'il doit superviser l'existence continue d'objets, et comment ils se rapportent à d'autres objets, etc.

Dans les extraits de code que vous avez postés, vous ne créez que des objets et donc, à mon avis, Factory est un nom approprié. Bien que vous devez garder à l'esprit quelles sont les responsabilités conceptuelles de la classe et si elles pourraient se développer à l'avenir. Cela dit, je m'attendrais à ce qu'une usine n'ait pas à se soucier de créer elle-même des sessions, mais qu'elle fasse passer des sessions dans ses appels createFoo, donc il y a certainement un facteur de fudge dans la configuration. Je pense personnellement que je voudrais avoir une autre entité abstraite responsable de la création de sessions, puis les transmettre dans la PhotoFactory.

0

Je choisirais la deuxième solution (gestionnaire), puisque les objets se terminant par 'Factory' 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 qu'en fait votre premier appel de méthode statique getManager est en fait une usine, puisqu'il crée des instances d'objets Manager.

Questions connexes