Estoy creando una lógica comercial en la aplicación, pero no estoy seguro de cómo o dónde encapsularla, he utilizado el patrón de repositorio para el acceso a los datos, he visto algunos proyectos que usan DDD que tiene algunas clases con el sufijo "Servicio" y el sufijo "administrador", ¿qué se supone que debe cuidar cada una de estas clases en DDD?Diseño impulsado por dominio: administrador y servicio
Respuesta
No se cuelgue demasiado en la nomenclatura; en general, los servicios brindan algo a las clases a fin de reducir el acoplamiento, y el administrador es aún más general; podría tratarse de una clase que realiza un seguimiento de otros objetos y/o estados.
Mucho más importante para un enfoque DDD es realmente modelar el dominio. Esto depende en gran medida de su sector (o de la industria a la que apunta su aplicación) y del tipo de aplicación que está creando. "¿Dónde encapsular?" es la fuerza impulsora básica en este proceso, pero en gran parte se reduce a crear representaciones de clase de entidades del mundo real: empleados, clientes, proveedores, facturas, transacciones, presupuestos, contratos, etc.
Los servicios y gerentes pueden ayudar pegue estas cosas juntas en el tiempo de ejecución, y esa nomenclatura ayuda a distinguir estas clases de cosas que encapsulan la lógica del dominio.
En un escenario en el que ha decidido utilizar el patrón de modelo de dominio (claramente si desea hacer DDD), la lógica empresarial como validaciones, cálculos y reglas de negocio definitivamente forma parte del modelo de dominio (sus objetos comerciales y relaciones en esto).
Una buena referencia general también podría darle el libro de Martin Fowlers 'Patterns of Enterprise Application Architecture'.
Trate de ser lo más específico posible con el nombre. Como regla general, yo llamaría avoid the name "Manager", ya que su significado es bastante vago.
Los actores/nombres lógicos de negocios típicos serían Validadores, Reglas, Proveedores, Supervisores, Importadores/Exportadores, Serializadores, Procesadores (procesar una transacción) y Repositorios (el último de los cuales ya tiene). Si una sola clase está realizando más de una de estas funciones, probablemente debería dividirse en subclases.
Usted hizo la pregunta, "¿de qué se ocupan estas clases?" y de hecho, ese es el punto. El nombre SomethingManager
no le dice nada. OrderValidator
, por otro lado, le dice muy claramente lo que hace la clase, al igual que CustomerHistoryExporter
. Los servicios se encuentran en el área gris; si los servicios llevan el nombre de una acción pasiva, como ShippingService
, entonces está bastante claro qué trata el servicio, pero un nombre mejor podría ser algo como ShipmentDispatcher
. Usted consigue la idea, espero.
- 1. Contenedores IoC y diseño impulsado por dominio
- 2. Diseño impulsado por dominio y eventos de dominio
- 3. Diseño impulsado por dominio y transacciones en el entorno Spring
- 4. Entidades en el diseño impulsado por dominio
- 5. Implementación del diseño impulsado por el dominio
- 6. Diseño impulsado por el dominio - Agregar raíces
- 7. ¿Qué es el diseño impulsado por dominio?
- 8. ¿Qué es el diseño impulsado por dominio?
- 9. Patrón de estado y diseño impulsado por dominio
- 10. Diseño impulsado por dominio, objetos de dominio, actitud sobre Setters
- 11. diseño impulsado por dominio, repositorios y entidades mixtas
- 12. CouchDB/NoSQL y el diseño impulsado por el dominio?
- 13. Diseño impulsado por dominio, SOC y identificación de entidad
- 14. Diseño impulsado por dominio y Entity Framework 4.1 (primer código)
- 15. Preguntas relacionadas con el diseño impulsado por el dominio
- 16. ¿Cómo organizar un proyecto de diseño impulsado por dominio?
- 17. Forma funcional de implementar el diseño impulsado por dominio
- 18. ¿Diseño impulsado por el dominio en la programación funcional?
- 19. Diseño impulsado por dominio - API de datos externos como repositorio o servicio
- 20. Diseño impulsado por dominio novato, explique brevemente 'objetos de valor' y 'servicios'
- 21. En Diseño impulsado por dominio, ¿puede usar las entidades de su dominio en su UI?
- 22. ¿Cuándo utilizar el desarrollo impulsado por dominio y el desarrollo impulsado por base de datos?
- 23. Enviando un correo electrónico o SMS usando CQRS y diseño impulsado por dominio
- 24. Algunas preguntas sobre la estructuración de espacios de nombres de diseño impulsado por dominio
- 25. Dominio Impulsado Esfuerzos de diseño en lenguajes dinámicos?
- 26. Diseño impulsado por el dominio frente a arquitectura impulsada por modelo
- 27. ¿Cómo se puede combinar el diseño impulsado por dominio con la programación orientada a aspectos?
- 28. ¿Cómo el código del Entity Framework-First mappings refleja el diseño impulsado por el dominio?
- 29. ¿Qué problemas encuentra con esta vista en el diseño impulsado por dominio?
- 30. ¿Cuáles son las principales preguntas/soluciones que se encuentran en el diseño impulsado por el dominio?
¡Una buena explicación, gracias! –