2012-02-16 11 views
5

Dando vueltas con el diseño impulsado por el dominio, me encontré con una situación sobre cómo identificar las raíces agregadas dentro de mi modelo de dominio.¿Cómo identificar las raíces agregadas en el modelo de dominio?

tengo las siguientes tres clases, el modelado de una sencilla lista de tareas:

public class List { 
    private IList<Task> _tasks; 

    public List() { ... } 
    public string Name { get; set; } } 
    public IEnumerable<Task> Tasks() { ... } 
    public void AddTask(string descr) { ... } 
    public void RemoveTask(Task t) { ... } 
    public Task GetRandomTask() { ... } 
} 

public class Task { 
    private IList<Update> _updates; 

    public Task(string descr) { ... } 

    public string Description { get; } 
    public bool IsClosed { get; } 
    public IEnumerable<Update> Updates() { ... } 
    public void AddUpdate(string descr, bool close) { ... } 
} 

public class Update { 
    public Update(string descr) { ... } 
    public string Description { get; } 
} 

puedo afirmar lo siguiente sobre el modelo:

  1. existiese una actualización sólo dentro del contexto de una Tarea.
  2. Una tarea existe solo dentro del contexto de una lista.

La lista, por lo tanto, parecería ser la única raíz agregada. (De hecho, mi capa de acceso a datos solo permitirá cargar/guardar objetos List.) Sin embargo, no puedo ver cómo puedo empujar limpiamente la UI que existe actualmente en mi clase Task, a la clase List. Por el momento, mi clase List está distribuyendo referencias a los objetos Tarea, permitiendo que la persona que llama los modifique.

¿Esto implica que la tarea también es una raíz agregada, incluso si su existencia depende de una lista que contiene?

Gracias de antemano.

+1

Pregunta relacionada: [DDD: identificación de la raíz agregada] (http://programmers.stackexchange.com/questions/150196/). –

Respuesta

5

Vaughn Vernon tiene un 3 part article sobre diseño agregado que podría arrojar algo de luz sobre su problema.

+0

gracias por el útil enlace. – rob

Cuestiones relacionadas