Quiero pedir algunos consejos sobre cómo evitar la escritura de objetos que son meros contenedores de datos.DDD - Agregar raíces y crear objetos de comportamiento
Considere lo siguiente Raíz Agregada:
public class Post : IAggregateRoot
{
List<Comment> Comments {get; set;}
}
Dadas las pinciples que rigen el trabajo raíces forma agregada, que es válida para llamar al código como este?
new Post().Comments.Add(New Comment("stuff"));
¿O es esta la manera correcta?
public class Post : IAggregateRoot
{
List<Comment> Comments {get; private set;}
public void AddComment(string message)
{
Comments.Add(new Comment(message));
}
}
Y se llama así:
new Post().AddComment("stuff");
Es esto lo Eric Evan significa Roots agregados siendo atómica?
Si este es el caso, ¿significa que las entidades no tienen entidades públicas, pero en su lugar tienen métodos de apoyo (AddThis, RemoveThat)? ¿Es así como creas objetos con un comportamiento rico?
Ambos probablemente sean incorrectos a menos que tengas una razón válida para agrupar 'Post' y' Comments' juntos. ¿Qué invariantes comerciales está tratando de proteger con su gran agregado de clúster? Si no hay, entonces 'Comment' debe ser su propia raíz agregada. – plalx