Tactical Design - jahurtadod/domain-driven-design GitHub Wiki

Después de que le haya dado una base sólida con diseño estratégico.

¿Qué es el Diseño Táctico?

El diseño táctico, es un conjunto de recursos técnicos utilizados en la construcción de su modelo de dominio, estos recursos deben aplicarse para trabajar en un único contexto delimitado.

Cuando los estándares de diseño táctico se utilizan correctamente, puede enriquecer su modelo de dominio, lo que en consecuencia reflejará su negocio con claridad.

El Diseño Táctico nos ayuda a crear un elegante Modelo de Dominio usando Bloques de Construcción, ver abajo los principales Bloques de Construcción:

Entidades

Una entidad es un objeto potencialmente cambiante, que tiene un identificador único. Las entidadestienen una vida propia dentro de su modelo de dominio,lo que le permite obtener todo el historial de transición de esta Entidad.

Objetos de valor

Lo que diferencia un objeto Value de una entidad es que, Value Objects son inmutables y no tienen una identidad única, solo se definen por los valores de sus atributos. La consecuencia de esta inmutabilidad es que para actualizar un objeto Value, debe crear una nueva instancia para reemplazar la antigua.

Agregados

Es uno de los patrones más importantes y complejos de Diseño Táctico,los agregados se basan en otros dos estándares tácticos,que son Entidades y Objetos de Valor. Un agregado es un clúster de una o varias entidadesy también puede contener objetos de valor. La entidad principal de este clúster recibe el nombre de raíz agregada.

Servicios

Los servicios son objetos sin estado que realizan alguna lógica que no se ajustan a una operación en una entidad o objeto de valor. Realizan operaciones específicas del dominio, que pueden implicar varios objetos de dominio.

Repositorios

Los repositorios se utilizan principalmente para tratar el almacenamiento, abstraen las preocupaciones sobre el almacenamiento de datos. Son responsables de conservar los agregados.

Fábricas

Las fábricas se utilizan para proporcionar una abstracción en la construcción de un objeto y pueden devolver una raíz agregada, una entidado un objeto de valor. Las fábricas son una alternativa para crear objetos que tienen complejidad en la creación a través del método constructor.

Eventos

Los eventos indican acontecimientos significativos que se han producido en el dominio y deben notificarse a otras partes interesadas que pertenecen al dominio. Es común que Los agregados publiquen eventos.

Módulos

Los módulos son poco mencionados por los desarrolladores, sin embargo, su uso puede ser muy interesante. Los módulos nos ayudan a segregar conceptos, se pueden definir como un paquete Java o un espacio de nombres de C-, y siempre seguir el lenguaje Ubiquitous.