1
resposta

O exemplo usado de Domain Service está correto?

Na tarefa seguinte, é descrito que Domain Services são "objetos que encapsulam operações ou lógicas de negócio que não pertencem naturalmente a uma Entidade ou Value Object específico.".

No exemplo demonstrado de EnviarCupomDesconto foi dito que ele deveria ser implementado na Infraestrutura.

Meu questionamento é se isso faz sentido, porque se Domain Service encapsula operações de negócio, ele não deveria ser implementado na infraestrutura, mas sim no domínio.

1 resposta

Oi Reinaldo! Como vai?

A ideia por trás dos Domain Services é realmente encapsular lógicas de negócio que não pertencem a uma entidade ou objeto de valor específico. No entanto, a implementação de um Domain Service pode, sim, envolver a infraestrutura, especialmente quando se trata de ações que requerem interação com sistemas externos, como o envio de e-mails.

No exemplo que você mencionou, o EnviarCupomDesconto é uma interface que define a operação de enviar um cupom, mas a implementação real dessa operação pode depender de serviços de infraestrutura, como um serviço de e-mail. A interface em si faz parte do domínio, pois define uma operação de negócio, mas a implementação concreta, que pode envolver detalhes técnicos de como o e-mail é enviado, reside na infraestrutura.

Por exemplo, a interface EnviarCupomDesconto pode ser implementada por uma classe EnviarCupomDescontoViaEmail, que utiliza um serviço de e-mail para enviar o cupom. Essa classe de implementação estaria na camada de infraestrutura, enquanto a interface permanece no domínio.

Espero que isso ajude a esclarecer a diferença entre a definição do serviço de domínio e sua implementação.

Bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!