Repository e Factory, como andam juntas

Olá pessoal

Qual a relação entre factory e repository, tendo em vista que uma cria novos objetos (factory) e outra retorna objetos da infra-estrutura (repository).

Se por exemplo ou mandar criar um novo objeto na factory, um objeto que é uma entidade… A factory usará o repository para salva-lo? isso é óbvio.

Mas esta seria a unica reação entre eles?

Minha dúvida é:

Para todas as requisições de objetos já persistentes, o cliente deve requisitar direto no repository?.. ou requisitar a factory que reconstroi o objeto usando o repository… e assim retornando ao cliente?

Fui claro na dúvida??

Bom feriado a todos

Sanderson Macedo

Sim.

Factory apenas para objetos novos, ainda não persistidos. E que possuem uma construção um tanto quanto complexa que você quer agilizar.

[quote=sandeco]Olá pessoal

Qual a relação entre factory e repository, tendo em vista que uma cria novos objetos (factory) e outra retorna objetos da infra-estrutura (repository).

Se por exemplo ou mandar criar um novo objeto na factory, um objeto que é uma entidade… A factory usará o repository para salva-lo? isso é óbvio.

[/quote]

Isso não é obvio. É uma distorção sua. O objeto factory cria o objeto mas não usa o repositorio. Vc pode fazer a factory usar o repositorio, mas é escolha sua. Claro que ao fazer isso, a responsabilidade da factory deixa de ser apenas criar objetos e portanto deixa de ser uma factory.

A factory não usará o repositorio para salvar coisa nenhuma. Aliás porque ainda nem sequer existem dados no objeto.

Não vejo problemas em usar Repository como uma Factory, mas eles são diferentes.

Factory é um padrão utilizado em qualquer Camada para criar um objeto complexo, basicamente quando um construtor simples não dá conta.

Repository fica na Camada de Negócios, é ‘onde os objetos vão dormir’ quando são persistidos. Caso você queira colocar a criação de um novo objeto no Repository também ele pode ser uma Factory ou delegar para uma.