He estado trabajando para aplicar el patrón de diseño impulsado por dominio a nuestra aplicación web. Uno de los problemas con los que nos hemos encontrado es evitar tener que usar un repositorio dentro de una entidad.Patrón de diseño controlado por el dominio - accediendo al repositorio desde el dominio
Por ejemplo, tenemos algunas entidades cuyos métodos activarán un correo electrónico. Entonces, debemos tener acceso a la plantilla de correo electrónico (almacenada en la base de datos), así como también crear un nuevo registro de correo electrónico en la tabla de cola de la base de datos. Actualmente estamos violando el patrón al acceder a los repositorios en estas instancias.
¿Deberíamos estar utilizando una capa de "servicio" o "aplicación" en estos casos (tenemos muchos de ellos)? ¿Hay una mejor manera de evitar este problema?
Usar un servicio es un buen enfoque. Con respecto a la inyección del servicio: es mejor utilizar un enfoque de envío doble pasando el servicio al * método * en lugar del * constructor *. Esto revela qué métodos dependen del servicio y le permite usar implementaciones de servicios diferentes para cada método. –