Pessoal,
hoje quero trazer um exemplo prático de como aplicar o padrão Repository do jeito certo, especialmente dentro da proposta de DDD — Domain-Driven Design.
E o que a gente vai ver aqui não é um CRUD qualquer com “aluno” e “professor”.
Vamos usar um exemplo real, que vem de um sistema de finanças familiares que venho desenvolvendo e ensinando.
No nosso sistema, uma Conta representa uma categoria de receita ou despesa da família.
Por exemplo:
Despesas
├── Água
├── Luz
├── Internet
└── Cartão de Crédito
Receitas
├── Salário
└── Rendimentos
Cada conta pode ter subcontas, formando uma estrutura hierárquica. Ou seja, uma determinada tem varias contas filhas.
E isso exige uma lógica um pouco mais elaborada para buscar, salvar e atualizar essas informações.
Muito.
Porque se a gente seguir a ideia do DDD, a gente precisa entender que:
O Repository é parte do domínio.
Ele serve à lógica do sistema, e não à tecnologia.
domain.repository
: