Cujo nome é mais correto no meu caso: gerente ou de fábrica (ou outra coisa)?

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

  •  22-07-2019
  •  | 
  •  

Pergunta

Eu tenho seguinte código:

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

Eu não tenho certeza que eu escolhi nome correto. Não é tão importante, mas estou apenas curioso o que você tinha escolhido no meu caso. Outra versão é 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: Acabei de encontrar próximo exemplo a hibernação javadocs:

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

Isso é um erro de nomenclatura?

Foi útil?

Solução

Em um nível muito alto, eu diria que é uma fábrica que seja apenas responsável por criar instâncias de classes; e um gerente se ele precisa para supervisionar a existência contínua dos objetos, e como eles se relacionam com outros objetos, etc.

Nos trechos de código que você postou você está apenas criando objetos e, portanto, na minha opinião, Fábrica é um nome apropriado. Embora você deve ter em mente quais são as responsabilidades conceituais da classe são e se eles poderiam expandir no futuro.

Dito isto, gostaria de classicamente esperar uma fábrica para não ter de se preocupar com a criação de sessões em si, mas sim ter sessões passadas em suas chamadas createFoo conforme necessário, então há definitivamente algum fator fudge como as coisas são criadas. Eu pessoalmente acho que eu teria alguma outra entidade abstrata responsável pela criação de sessões, e depois passá-los para o PhotoFactory.

Outras dicas

Eu escolheria a segunda solução (gerente), desde que os objetos que terminam com 'Factory' são geralmente considerados implementações do padrão de fábrica, o que essencialmente cria novas instâncias de objetos. Este não é o caso no seu exemplo, uma vez que gere uma sessão para um serviço particular.

agradável do que neste exemplo, é que de fato o seu primeiro getManager chamada de método estático é na verdade uma fábrica, uma vez que cria instâncias de objetos Manager.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top