Duvida com Repositório e Dominio no DDD
Atualmente estou em um projeto e estamos adotando DDD no mesmo porem algumas duvidas surgiram.
Um domínio pode ter uma interface de repositório para auxilo de suas regras de negócio?
Tendo uma interface de um repositório no domino isso acaba me permitindo que o próprio domínio se salve na base, isso é correto?
Seguindo o DDD a 'risca' as validações de preenchimento de campo devem ficar no domínio ou no serviço que chama os métodos do domínio?
Tenho lido sobre o assunto mas tenho tido dificuldades em encontrar exemplos práticos sobre o assunto.
quarta-feira, 21 de janeiro de 2015 18:02
Tem um tópico, aberto anteriormente, que talvez lhe ajude
https://social.technet.microsoft.com/Forums/pt-BR/121afcb9-9232-49b1-94a6-33055d4fa1d9/duvidas-em-relao-ao-ddd?forum=arquiteturapt
quarta-feira, 21 de janeiro de 2015 18:06
Sim, ele atende a primeira pergunta porem tinha outras duas não consegui resolver...
quarta-feira, 21 de janeiro de 2015 18:07
Interfaces podem ser usadas no domínio para representar serviços que ele precisará e que precisaram de alguma tecnologia para funcionar. O caso mais clássico é o acesso a dados, onde a necessidade é de domínio, mas a implementação é de Infra.
O domínio tem a necessidade de persistir seu estado. O que ele não pode é saber fazer isso diretamente. Quando você implementa o padrão repositório, abstraindo a implementação do domínio com uma interface, ele não saberá COMO a operação é realizada. O que garante o isolamento que o domínio precisa.
Sobre as validações, seguindo o que a POO diz, você deve declarar no construtor quais são os parâmetros obrigatórios do seu tipo. Pense no tipo DateTime, por exemplo. Você consegue criar uma Data inválida? Não. Seus tipos de domínio também não deveriam permitir. Dito isso, entenda que as validações de domínio e interface são parecidas, mas tem funções diferentes. O domínio tem que garantir o seu funcionamento, independente da interface que está sendo utilizada.