SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Domain-Driven Design(DDD)



twitter: @trukuxzo
Domain-Driven Design(DDD)
Es una forma de diseñar el software centrándonos
en lo que el cliente nos pide. El software que
hacemos tiene como objetivo resolver un
problema de nuestro cliente.

DDD es un estilo arquitectural. Se parece bastante
a un estilo en N-Layer en tanto que los dos estilos
separan las responsabilidades de la aplicación,
pero la forma de hacerlo es ligeramente distinta.
Capas vs Niveles (Layers vs. Tiers)

                                      Es la separación física en
Es la forma de organizar el           diferentes proyectos
código lógicamente y no físicamente
Consideraciones
Nuestro lenguaje debe ser el mismo que el del
usuario.

No deberíamos usar otros términos.

Tenemos que dejar de hablar de formas de
implementación (ej.: tablas) y pasar a hablar
en términos menos técnicos, que estén más
cerca del lenguaje del usuario y del negocio.
Ejemplos Escritos
• “Si le damos al servicio de ruteo un origen, un destino,
  una fecha de llegada, puede buscar las paradas a hacer…
  Y guardarlas en la base de datos” (vago y técnico)

• “El origen, destino y otros datos… se los damos al
  servicio de ruteo y nos devuelve un itinerario que tiene
  todo lo que necesitamos”(mejor, pero muchas palabras)

• “Un servicio de ruteo encuentra un itinerario que satisface
  una especificación de ruta” (conciso)

En este proceso de conversación con el usuario, se van
descubriendo sustantivos que representan conceptos del
dominio.
Evans Escribe
En una aplicación de carga y envío de
mercadería, para simplemente listar y seleccionar
el destino de la carga de una lista de ciudades,
debe haber código que (1) dibuje un control en la
pantalla, (2) consulte una base de datos para
obtener las posibles ciudades, (3) interprete el
ingreso de usuario y lo valide, (4) asocie la
ciudad seleccionada con la carga, y (5) confirme
el cambio en la base de datos. Todo este código
es parte del mismo programa, pero sólo una
pequeña parte está relacionado con el negocio de
envío de cargas.
Diagrama de Evans
User Interface

La más fácil de entender, esta capa es la responsable
de mostrar información al usuario, y aceptar nuevos
datos. Puede ser implementada para web, escritorio
gráfico, o cualquier otra tecnología de presentación,
presente o futura.

Se pueden hacer las presentaciones en entornos
tales como:
  –   Web: ASP.NET, ASP.NET MVC
  –   WinForms
  –   WPF
  –   Silverlight
Application

Define los trabajos que el software debe realizar y
dirige los objetos del dominio para que trabajen en
cada problema.

En general, es delgada, no contiene reglas de
negocio o conocimiento, sino coordina tareas y delega
el trabajo a colaboraciones de objetos del dominio.

No mantiene estado que refleje la situación del
negocio, pero puede mantener estado sobre el
progreso de una tarea del usuario o programa
Domain

En esta capa reside el corazón del software, según Evans. Las
reglas y lógica de negocio residen en esta capa. El estado de
entidades de negocio y su conducta es definida y usada aquí.

La comunicación con otros sistemas, detalles de persistencia, son
delegados en la capa de Infraestructura mediante interfaces.

Evans sugiere que se pueden ayudar con los patrones que él usa
en esta capa, como:
   –   Entities
   –   Value Objects
   –   Repositories
   –   Services y
   –   Factories.
Infraestructure

Esta capa es la responsable de implementar el mecanismo de
persistencia del modelo de dominio y de proporcionar la
implementación de todas las operaciones de comunicación.

La capa de infraestructura implementa las interfaces de los
repositorios definidas en la capa de dominio para el
mecanismo escogido (ficheros, base de datos, etc). y todas
aquellas operaciones de comunicación con el mundo exterior
que necesite el dominio (Emailer,Logger, etc.)

El mecanismo escogido para la persistencia debe ser
transparente a la capa de dominio.
Diagrama Sugerida
                         User Interface

 Views                     Controllers                    Services


                           Application
            Application
                                         Web Services
             Services


                            Domain
Domain
                         Domain Entities             Repositories
Services


                         Infraestructure
                                          Repositories
             Utilities
                                         Implementation
Evans Propone
El propone que el modelo de dominio resida en una capa, la
Capa de Dominio. De esta forma, el modelo de dominio es
protegido de los detalles técnicos, como la implementación
de la persistencia, y los detalles de presentación.

Me gusta decir que el dominio es un organismo, que recibe
estímulos, acciones desde el exterior, y reacciona a esos
comandos.

El dominio debería ejecutarse sin conocimiento detallado
del resto de la aplicación, serialización entre capas físicas,
detalles de presentación, y acceso a base de datos, deben
estar claramente separados de la implementación del
dominio.
Patrones Auxiliares - Entity

• Tienen continuidad (viven a lo largo de la vida del
  sistema)

• Tienen identidad

• Pueden cambiar los valores, pero sigue siendo el
  mismo proveedor
Patrones Auxiliares – Value
               Objects
• Los Value Objects se utilizan para representar
  conceptos importantes en nuestro dominio, pero su
  propósito es muy distinto al de las entidades

• El objetivo de los Value Objects es describir un
  concepto importante para nuestro dominio

• No son entidades por que no tienen una clave.
Patrones Auxiliares –
               Repository
• Se necesitan recuperar objetos, en general Entities,
  una entity se puede alcanzar desde otra

• En la capa de dominio definimos las interfaces que
  nuestro nivel de aplicación va a utilizar para para
  instanciar entidades de nuestro dominio pero no su
  implementación, esta se delega en la capa de
  infraestructura.

• No se accede a la base de datos directamente
Patrones Auxiliares – Services

• Frecuentemente en el dominio aparecen operaciones
  que no encajen bien dentro de ninguna entidad ya sea
  por que la operación tenga entidad por sí misma o por
  que la operación involucre a múltiples tipos de
  entidades.

• También pueden ser operaciones que pueden cambiar
  según el caso (ej.: algoritmos de cálculo de descuento,
  etc.)

• Los servicios de dominio solo deben ser utilizados para
  orquestar las operaciones entre entidades y no deben
  jamás tener estado interno.
Ejemplos

.Net

  http://code.google.com/p/ndddsample/


Java

  http://dddsample.sourceforge.net/
Fin

Weitere ähnliche Inhalte

Was ist angesagt?

IHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacción
IHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacciónIHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacción
IHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacciónFranklin Parrales Bravo
 
Fundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareFundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareRoger Villegas
 
CQRS .NET Conf Chile 2018
CQRS .NET Conf Chile 2018CQRS .NET Conf Chile 2018
CQRS .NET Conf Chile 2018Germán Küber
 
03 gestión de pruebas de software diseño de casos de pruebas
03 gestión de pruebas de software   diseño de casos de pruebas03 gestión de pruebas de software   diseño de casos de pruebas
03 gestión de pruebas de software diseño de casos de pruebasAntonio Quiña
 
Clean architecture
Clean architectureClean architecture
Clean architecture.NET Crowd
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationOğuzhan Soykan
 
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jspExplicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jspBoris Salleg
 
Sistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la WebSistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la WebTensor
 
Análisis y especificación de requerimientos
Análisis y especificación de requerimientosAnálisis y especificación de requerimientos
Análisis y especificación de requerimientosFranklin Parrales Bravo
 
Ddd reboot (english version)
Ddd reboot (english version)Ddd reboot (english version)
Ddd reboot (english version)Thomas Pierrain
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Arquitecturas de software exposicion
Arquitecturas de software   exposicionArquitecturas de software   exposicion
Arquitecturas de software exposicionjuca piro
 
Clean Architecture em PHP
Clean Architecture em PHPClean Architecture em PHP
Clean Architecture em PHPElton Minetto
 

Was ist angesagt? (20)

IHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacción
IHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacciónIHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacción
IHM Unidad 2: Factores Humanos, Estilos y Dispositivos de interacción
 
Fundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareFundamentos de la arquitectura de software
Fundamentos de la arquitectura de software
 
CQRS .NET Conf Chile 2018
CQRS .NET Conf Chile 2018CQRS .NET Conf Chile 2018
CQRS .NET Conf Chile 2018
 
03 gestión de pruebas de software diseño de casos de pruebas
03 gestión de pruebas de software   diseño de casos de pruebas03 gestión de pruebas de software   diseño de casos de pruebas
03 gestión de pruebas de software diseño de casos de pruebas
 
Modelo crc
Modelo crc   Modelo crc
Modelo crc
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
 
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jspExplicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
Explicacion metodologia 3 capas y base de datos, proyecto de ejemplo jsp
 
Sistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la WebSistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la Web
 
Análisis y especificación de requerimientos
Análisis y especificación de requerimientosAnálisis y especificación de requerimientos
Análisis y especificación de requerimientos
 
1-Unidad 1. Arquitectura de Diseño
1-Unidad 1. Arquitectura de Diseño1-Unidad 1. Arquitectura de Diseño
1-Unidad 1. Arquitectura de Diseño
 
Modelo TSP
Modelo TSPModelo TSP
Modelo TSP
 
Ddd reboot (english version)
Ddd reboot (english version)Ddd reboot (english version)
Ddd reboot (english version)
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Arquitecturas de software exposicion
Arquitecturas de software   exposicionArquitecturas de software   exposicion
Arquitecturas de software exposicion
 
Eigrp
EigrpEigrp
Eigrp
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
4.2. Un enfoque WAN
4.2. Un enfoque WAN4.2. Un enfoque WAN
4.2. Un enfoque WAN
 
Xp industrial
Xp industrialXp industrial
Xp industrial
 
Clean Architecture em PHP
Clean Architecture em PHPClean Architecture em PHP
Clean Architecture em PHP
 

Andere mochten auch

DDD Sydney 20111 Razor Session
DDD Sydney 20111 Razor SessionDDD Sydney 20111 Razor Session
DDD Sydney 20111 Razor SessionMohamed Meligy
 
DDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVCDDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVCAndy Butland
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCSteven Smith
 
Implementing DDD with C#
Implementing DDD with C#Implementing DDD with C#
Implementing DDD with C#Pascal Laurin
 
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Lightbend
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java scriptPascal Laurin
 

Andere mochten auch (6)

DDD Sydney 20111 Razor Session
DDD Sydney 20111 Razor SessionDDD Sydney 20111 Razor Session
DDD Sydney 20111 Razor Session
 
DDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVCDDD, CQRS and testing with ASP.Net MVC
DDD, CQRS and testing with ASP.Net MVC
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVC
 
Implementing DDD with C#
Implementing DDD with C#Implementing DDD with C#
Implementing DDD with C#
 
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
 
Tests automatisés java script
Tests automatisés java scriptTests automatisés java script
Tests automatisés java script
 

Ähnlich wie DDD-Domain-Driven Design guía completa

Aplicando las novedades de SSIS 2012 a nuestros escenarios
Aplicando las novedades de SSIS 2012 a nuestros escenariosAplicando las novedades de SSIS 2012 a nuestros escenarios
Aplicando las novedades de SSIS 2012 a nuestros escenariosSalvador Ramos
 
Qué es el sql
Qué es el sqlQué es el sql
Qué es el sqlMelixsa
 
Programacion web
Programacion webProgramacion web
Programacion webrubyxki
 
3 ultimas capas del modelo osi
3 ultimas capas del modelo osi 3 ultimas capas del modelo osi
3 ultimas capas del modelo osi cesartejadab
 
Servicio de Directorio
Servicio de DirectorioServicio de Directorio
Servicio de DirectorioDaniel Valdez
 
Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)josecuartas
 
Aplicaciones n capas en visual.net
Aplicaciones n capas en visual.netAplicaciones n capas en visual.net
Aplicaciones n capas en visual.netLisbeth Ocaña Bueno
 
Protocolos y funcionalidades de la capa de aplicacion
Protocolos y funcionalidades de la capa de aplicacionProtocolos y funcionalidades de la capa de aplicacion
Protocolos y funcionalidades de la capa de aplicacionFernando Illescas Peña
 
Unidad 4
Unidad 4Unidad 4
Unidad 4mi casa
 
Cliente servidor1
Cliente servidor1Cliente servidor1
Cliente servidor1Sara Amores
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de SoftwareRene Guaman-Quinche
 
El lenguaje de_la_web_
El lenguaje de_la_web_El lenguaje de_la_web_
El lenguaje de_la_web_alexatostado1
 

Ähnlich wie DDD-Domain-Driven Design guía completa (20)

Practica sql
Practica sqlPractica sql
Practica sql
 
Aplicando las novedades de SSIS 2012 a nuestros escenarios
Aplicando las novedades de SSIS 2012 a nuestros escenariosAplicando las novedades de SSIS 2012 a nuestros escenarios
Aplicando las novedades de SSIS 2012 a nuestros escenarios
 
Qué es el sql
Qué es el sqlQué es el sql
Qué es el sql
 
Practica sql
Practica sqlPractica sql
Practica sql
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion web
Programacion webProgramacion web
Programacion web
 
3 ultimas capas del modelo osi
3 ultimas capas del modelo osi 3 ultimas capas del modelo osi
3 ultimas capas del modelo osi
 
Servicio de Directorio
Servicio de DirectorioServicio de Directorio
Servicio de Directorio
 
Aplicaciones n capas en visual net
Aplicaciones n capas en visual netAplicaciones n capas en visual net
Aplicaciones n capas en visual net
 
APLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NETAPLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NET
 
10 -capas_superiores
10  -capas_superiores10  -capas_superiores
10 -capas_superiores
 
Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)
 
Aplicaciones n capas en visual.net
Aplicaciones n capas en visual.netAplicaciones n capas en visual.net
Aplicaciones n capas en visual.net
 
Laboratorio de Programacion.
Laboratorio de Programacion.Laboratorio de Programacion.
Laboratorio de Programacion.
 
Protocolos y funcionalidades de la capa de aplicacion
Protocolos y funcionalidades de la capa de aplicacionProtocolos y funcionalidades de la capa de aplicacion
Protocolos y funcionalidades de la capa de aplicacion
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Memoria
MemoriaMemoria
Memoria
 
Cliente servidor1
Cliente servidor1Cliente servidor1
Cliente servidor1
 
C4model - Arquitectura de Software
C4model - Arquitectura de SoftwareC4model - Arquitectura de Software
C4model - Arquitectura de Software
 
El lenguaje de_la_web_
El lenguaje de_la_web_El lenguaje de_la_web_
El lenguaje de_la_web_
 

Mehr von Senior Dev

TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Senior Dev
 
Message Queuing (MSMQ)
Message Queuing (MSMQ)Message Queuing (MSMQ)
Message Queuing (MSMQ)Senior Dev
 
Teoría de colas
Teoría de colasTeoría de colas
Teoría de colasSenior Dev
 
JSON - (English)
JSON - (English)JSON - (English)
JSON - (English)Senior Dev
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)Senior Dev
 
MVC - (Spanish)
MVC - (Spanish)MVC - (Spanish)
MVC - (Spanish)Senior Dev
 

Mehr von Senior Dev (7)

Scrum
ScrumScrum
Scrum
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Message Queuing (MSMQ)
Message Queuing (MSMQ)Message Queuing (MSMQ)
Message Queuing (MSMQ)
 
Teoría de colas
Teoría de colasTeoría de colas
Teoría de colas
 
JSON - (English)
JSON - (English)JSON - (English)
JSON - (English)
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
MVC - (Spanish)
MVC - (Spanish)MVC - (Spanish)
MVC - (Spanish)
 

DDD-Domain-Driven Design guía completa

  • 2. Domain-Driven Design(DDD) Es una forma de diseñar el software centrándonos en lo que el cliente nos pide. El software que hacemos tiene como objetivo resolver un problema de nuestro cliente. DDD es un estilo arquitectural. Se parece bastante a un estilo en N-Layer en tanto que los dos estilos separan las responsabilidades de la aplicación, pero la forma de hacerlo es ligeramente distinta.
  • 3. Capas vs Niveles (Layers vs. Tiers) Es la separación física en Es la forma de organizar el diferentes proyectos código lógicamente y no físicamente
  • 4. Consideraciones Nuestro lenguaje debe ser el mismo que el del usuario. No deberíamos usar otros términos. Tenemos que dejar de hablar de formas de implementación (ej.: tablas) y pasar a hablar en términos menos técnicos, que estén más cerca del lenguaje del usuario y del negocio.
  • 5. Ejemplos Escritos • “Si le damos al servicio de ruteo un origen, un destino, una fecha de llegada, puede buscar las paradas a hacer… Y guardarlas en la base de datos” (vago y técnico) • “El origen, destino y otros datos… se los damos al servicio de ruteo y nos devuelve un itinerario que tiene todo lo que necesitamos”(mejor, pero muchas palabras) • “Un servicio de ruteo encuentra un itinerario que satisface una especificación de ruta” (conciso) En este proceso de conversación con el usuario, se van descubriendo sustantivos que representan conceptos del dominio.
  • 6. Evans Escribe En una aplicación de carga y envío de mercadería, para simplemente listar y seleccionar el destino de la carga de una lista de ciudades, debe haber código que (1) dibuje un control en la pantalla, (2) consulte una base de datos para obtener las posibles ciudades, (3) interprete el ingreso de usuario y lo valide, (4) asocie la ciudad seleccionada con la carga, y (5) confirme el cambio en la base de datos. Todo este código es parte del mismo programa, pero sólo una pequeña parte está relacionado con el negocio de envío de cargas.
  • 8. User Interface La más fácil de entender, esta capa es la responsable de mostrar información al usuario, y aceptar nuevos datos. Puede ser implementada para web, escritorio gráfico, o cualquier otra tecnología de presentación, presente o futura. Se pueden hacer las presentaciones en entornos tales como: – Web: ASP.NET, ASP.NET MVC – WinForms – WPF – Silverlight
  • 9. Application Define los trabajos que el software debe realizar y dirige los objetos del dominio para que trabajen en cada problema. En general, es delgada, no contiene reglas de negocio o conocimiento, sino coordina tareas y delega el trabajo a colaboraciones de objetos del dominio. No mantiene estado que refleje la situación del negocio, pero puede mantener estado sobre el progreso de una tarea del usuario o programa
  • 10. Domain En esta capa reside el corazón del software, según Evans. Las reglas y lógica de negocio residen en esta capa. El estado de entidades de negocio y su conducta es definida y usada aquí. La comunicación con otros sistemas, detalles de persistencia, son delegados en la capa de Infraestructura mediante interfaces. Evans sugiere que se pueden ayudar con los patrones que él usa en esta capa, como: – Entities – Value Objects – Repositories – Services y – Factories.
  • 11. Infraestructure Esta capa es la responsable de implementar el mecanismo de persistencia del modelo de dominio y de proporcionar la implementación de todas las operaciones de comunicación. La capa de infraestructura implementa las interfaces de los repositorios definidas en la capa de dominio para el mecanismo escogido (ficheros, base de datos, etc). y todas aquellas operaciones de comunicación con el mundo exterior que necesite el dominio (Emailer,Logger, etc.) El mecanismo escogido para la persistencia debe ser transparente a la capa de dominio.
  • 12. Diagrama Sugerida User Interface Views Controllers Services Application Application Web Services Services Domain Domain Domain Entities Repositories Services Infraestructure Repositories Utilities Implementation
  • 13. Evans Propone El propone que el modelo de dominio resida en una capa, la Capa de Dominio. De esta forma, el modelo de dominio es protegido de los detalles técnicos, como la implementación de la persistencia, y los detalles de presentación. Me gusta decir que el dominio es un organismo, que recibe estímulos, acciones desde el exterior, y reacciona a esos comandos. El dominio debería ejecutarse sin conocimiento detallado del resto de la aplicación, serialización entre capas físicas, detalles de presentación, y acceso a base de datos, deben estar claramente separados de la implementación del dominio.
  • 14. Patrones Auxiliares - Entity • Tienen continuidad (viven a lo largo de la vida del sistema) • Tienen identidad • Pueden cambiar los valores, pero sigue siendo el mismo proveedor
  • 15. Patrones Auxiliares – Value Objects • Los Value Objects se utilizan para representar conceptos importantes en nuestro dominio, pero su propósito es muy distinto al de las entidades • El objetivo de los Value Objects es describir un concepto importante para nuestro dominio • No son entidades por que no tienen una clave.
  • 16. Patrones Auxiliares – Repository • Se necesitan recuperar objetos, en general Entities, una entity se puede alcanzar desde otra • En la capa de dominio definimos las interfaces que nuestro nivel de aplicación va a utilizar para para instanciar entidades de nuestro dominio pero no su implementación, esta se delega en la capa de infraestructura. • No se accede a la base de datos directamente
  • 17. Patrones Auxiliares – Services • Frecuentemente en el dominio aparecen operaciones que no encajen bien dentro de ninguna entidad ya sea por que la operación tenga entidad por sí misma o por que la operación involucre a múltiples tipos de entidades. • También pueden ser operaciones que pueden cambiar según el caso (ej.: algoritmos de cálculo de descuento, etc.) • Los servicios de dominio solo deben ser utilizados para orquestar las operaciones entre entidades y no deben jamás tener estado interno.
  • 18. Ejemplos .Net http://code.google.com/p/ndddsample/ Java http://dddsample.sourceforge.net/
  • 19. Fin