Pergunta

Eu estou fazendo uma aplicação java.

Este são os meus arquivos até agora:

Pessoa Interface.

tem um setName (String aName) Método

PersonImpl

Implementação de Pessoa Interface.

PersonFactory interface

tem um createPerson ()

PersonFactoryImpl

Implementação de PersonFactory Interface.

A coisa é que eu estava disposta a adicionar um método getAll () que retorna uma coleção de pessoas e não estou certo de onde colocá-lo.

Eu estava pensando em adicioná-lo como um método estático para PersonImpl ou para PersonFactoryImpl, mas eu não tenho certeza.

Qual é a melhor maneira?

Obrigado por ler!

Foi útil?

Solução

Se outra implementação do PersonFactory é fornecido, deve também precisa fornecer um #getAll? Se assim for, ele pertence na interface ... e então ele não pode ser um método estático em Java.

Tendo em conta que, é uma função do seu PersonFactory ou deve haver uma abstração para o seu mecanismo de armazenamento, bem como? Se assim for, uma interface PersonRepository cujas implementações aceitar um PersonFactory, e fornece uma casa natural para a funcionalidade getAll tipo parece mais apropriado. Se não, então como um membro da PersonFactory concreto poderia ser suficiente apropriado ...

Outras dicas

A maneira lógica seria a de adicioná-lo como um método estático para o PersonFactory. Essa é a classe que gera seus objetos Person, e se mantém referências a todos os objetos gerados, ele deve ser capaz de responder a sua getAll() API.

Obviamente, não é razoável para cada objeto Person estar ciente de outros objetos semelhantes, portanto, este método não pertence lá.

EDIT: Dado o fato de que eles residem em um banco de dados, pode ser sábio para desacoplar a PersonFactory (que trabalho é criar objetos Person), a partir de um PersonRepository que será realmente acessando o banco de dados (ou qualquer persistência que você tem) e retornando objetos Person.

Parece estranho para mim que a mesma classe é responsável tanto para a criação de objetos, bem como buscar-los a partir de um banco de dados. Dito isto, se a sua aplicação exige isso tight-acoplamento, pode ser aceitável.

A fábrica é instâncias de gestão responsáveis ??das Pessoas, de modo que é o local correto para colocá-lo. Além disso, deve ser não-estático, assim como createPerson() é.

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