Recentemente comecei a estudar arquitetura limpa, e estou com bastante dúvida sobre “use cases”, pois não entendi realmente isso. O mais próximo que cheguei da minha inteligencia foi que é um “services”, mas isso não seria parte da infraestrutura a implementação?
Segue o modelo dos meus packages:
Domain: é a parte central da aplicação, onde que deve ser colocado apenas as entidades (Enum, exceptions, etc). Outra dúvida foi que ao desenvolver relacionamento de classes, isso não é a responsabilidade do domain?
Gateways: A camada de abstrações, onde que apenas deve possuir interfaces relacionadas a entidade. A camada tem um forte vinculado com as entidades.
UseCases: Está é uma camada onde que atua como “serviço”… Não entendi muito bem.
Infrastructure: A camada das implementações, seja do gateway, persistencia a banco de dados, apenas é uma camada não abstrata e possui um grande vinculo com domain.
Adapter: A camada dos UI, ou conhecido como endpoints. Aqui deve apenas possuir Dtos, resources, enfim, tudo que envolve a interação com o usuário.
Setup: A camada de inversão da dependencia, onde tera as anotações do Spring, etc.
Acima foi o que entendi sobre arquitetura limpa. Posso estar errado ou certo? Mas aceito sugestões e dicas.