Ola, Considerando que o GeradorDeSelor e um ouvinte (handler) interessado em eventos do tipo ALUNO_MATRICULADO. Ele nao deveria estar em gamificacao.dominio.selo.evento ?
Ola, Considerando que o GeradorDeSelor e um ouvinte (handler) interessado em eventos do tipo ALUNO_MATRICULADO. Ele nao deveria estar em gamificacao.dominio.selo.evento ?
Olá Eduardo,
Obrigado por compartilhar sua dúvida conosco! É sempre importante entendermos como organizar nossos códigos de forma apropriada para garantir a manutenção e escalabilidade do nosso sistema.
Respondendo à sua pergunta, na verdade, o GeradorDeSelos não deveria estar na camada de domínio (dominio.selo.evento), pois ele não representa uma entidade de domínio. O GeradorDeSelos é uma classe de aplicação que tem como responsabilidade gerar selos para os alunos com base em eventos que ocorrem no sistema.
O correto seria colocar o GeradorDeSelos na camada de aplicação (aplicacao.gamificacao) e fazer com que ele escute os eventos do tipo ALUNO_MATRICULADO que são gerados na camada de domínio. Assim, sempre que um evento desse tipo ocorrer, o GeradorDeSelos será acionado e poderá gerar os selos correspondentes.
É importante lembrar que, na arquitetura em camadas, a camada de domínio não deve depender de nenhuma outra camada. Portanto, a camada de domínio não deve conhecer a existência da camada de aplicação. Em vez disso, a camada de aplicação deve conhecer a camada de domínio e utilizar os serviços e entidades de domínio que ela disponibiliza.
Espero ter ajudado!