Pregunta

Recientemente he estado mirando el patrón de repositorio como una forma de cepillar todos los detalles de persistencia debajo de la alfombra en lo que respecta al código del cliente. Mientras lee, parece que un repositorio es / puede ser [¿generalmente?] Responsable de los agregados en lugar de solo las clases directas.

Esto tiene sentido para mí, ya que podría tener una clase que defina Publicaciones y otra que defina Comentarios . Esto lo convierte en un candidato ideal para un agregado ya que los dos están muy relacionados. Sin embargo, ¿cómo representaría a una clase de Usuarios y su relación con sus Publicaciones ?

¿Tendría sentido agregar Usuarios con el agregado de Publicaciones / Comentarios , o mantener Usuarios por sí mismo y simplemente tener una asociación a través de una buena referencia antigua?

He intentado buscar la respuesta yo mismo usando Google, pero muchos de los ejemplos que encuentro son solo independientes. es decir, Publicaciones / Comentario o tal vez Ordenar y Línea de pedido etc. No puedo encontrar nada que muestre cómo encajan entre sí otras clases relacionadas.

No estoy aplicando esto a nada específico, aunque PHP o Java / C # probablemente sería el área en la que buscaría usar estas ideas. En cualquier caso, solo estoy explorando y tratando de entender algunas de estas ideas y conceptos antes de salir corriendo y crear un monstruo. :)

Gracias por su tiempo.

¿Fue útil?

Solución

El patrón de repositorio está bastante poco definido y no necesariamente tiene ninguna relación con el patrón agregado. Sin embargo, si se suscribe a la forma DDD de hacer las cosas, entonces sí, los repositorios son únicos para los agregados.

Así que echemos un vistazo a esto desde el punto de vista DDD. DDD dice que los objetos dentro de un agregado pueden tener una referencia a otra raíz agregada, pero a los objetos dentro de un agregado solo se puede acceder a través de la raíz. La regla general para determinar los agregados es lo que se debe eliminar al eliminar la raíz. Sin embargo, DDD desalienta el uso de las relaciones más que la mayoría de las metodologías diciendo que solo porque una relación existe en un dominio, no es necesario que exista en su modelo del dominio, así que tenga eso en cuenta.

En su caso, cuando elimine una publicación, supongo que también eliminaría los comentarios, pero no el usuario que creó la publicación o los usuarios que la comentaron. Por lo tanto, tiene razón al definir el agregado de publicación / comentario, pero no tendría sentido agrupar a los usuarios en ese agregado.

Los usuarios, al ser su propio agregado, pueden contener una relación con todas sus publicaciones, porque Post es la raíz agregada. También podría implementar este método en el PostRepository para obtener todas las publicaciones de un usuario determinado. ¡Espero que ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top