Hola gente!
Paul, dejando de lado pais, estado, ciudad (supongo que era asi lo que querias modelar pais => estado => ciudad, en lugar de pais => ciudad => estado como escribiste en el primer mail), hay que recordar que podemos tener
A -> B -> C
y que A sea aggregate root, y B tambien un aggregate root, como en la fig 5 del segundo documento del enlace que te recomendaron:
Ahora, volviendo a pais => estado => ciudad
Me confunde un poco. En el primer email, escribias que usuario tiene que tener estado.
En el email de abajo, escribes que usuario "haria referencia a ciudad o a estado". Como es?
En el primer email, escribias:
"a clase estado si o si existira en el sistema, ya que servira
para localizar productos."
Eso es mas interesante. Podrias explicar el caso de uso? Que es eso de "localizar los productos". Es ubicarlos, saber donde estan? Porque lo va a usar eso Usuario? En que caso de uso, Usuario interviene, se localizan los productos, y se usa el Usuario.Estado? Por que luego ponias "el usuario podria tener CIUDAD o estado"
Todo DDD se basa mucho en los casos de uso. Si te explayas, podriamos tener mas claro el problema, y quizas la solucion.
Ejemplo: se me ocurren sistemas donde Usuario tiene Lugar, pero cuando compra, esta de vacaciones y quiere que se lo envian a otro lado.
Ejemplo: se me ocurren sistemas donde Usuario es Empleado de una Compania, y es la Compania la que tiene Depositos, y los Depositos tienen lugares, y es ahi donde hay que llevar los productos que Usuario compra para su Compania/Deposito, y hay que ubicar NUESTROS productos mas cercanos a ese lugar final
Pero no tengo idea, de si tu usuario va a comprar, vender, buscar en auto los "productos que hay que localizar"
O entendi todo mal, y "productos a localizar" es "los nombres de los productos tiene que aparecer en el lenguaje de preferencia del usuario". Entonces, se me ocurre:
- No se usa Usuario.Lugar
- Se usa Usuario.LenguajeDePreferencia
Bien puede ser un estadounidense que este viviendo en Buenos Aires, Argentina, y quiere el catalogo en ingles americano, independientemente del lugar en el que esta viviendo, y donde quiere que le envien los productos
O puede que el usuario este en Canada, Ottawa. Como decidir BASADO SOLO EN EL LUGAR, si lo quiere en frances o en ingles? De nuevo, un argumento para descartar Usuario.Lugar para localizar productos.
(Aca en Argentina "localizar" se usa tambien en la acepcion "ubicar")
Nos leemos!
Angel "Java" Lopez