2012-02-16 8 views
5

Dabbling with domain driven design, mi sono imbattuto in una situazione riguardante come identificare le radici aggregate all'interno del mio modello di dominio.Come identificare le radici aggregate nel modello di dominio?

ho le seguenti tre classi, la modellazione di un semplice elenco di cose da fare:

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; } 
} 

posso affermare quanto segue circa il modello:

  1. un aggiornamento esiste solo nel contesto di un Compito.
  2. Un'attività esiste solo nel contesto di un elenco.

L'elenco, pertanto, sembra essere l'unica radice aggregata. (In effetti il ​​mio livello di accesso ai dati consentirà solo il caricamento/salvataggio di oggetti List.) Tuttavia non riesco a vedere come posso spingere in modo pulito l'interfaccia utente attualmente esistente sulla mia classe Task, sulla classe List. Al momento la mia classe List distribuisce riferimenti ad oggetti Task, consentendo al chiamante di modificarli.

Ciò implica che Task sia anche una radice aggregata, anche se la sua esistenza dipende da una lista di contenuti?

Grazie in anticipo.

+1

Domanda relativa: [DDD: identificazione radice aggregata] (http://programmers.stackexchange.com/questions/150196/). –

risposta

5

Vaughn Vernon ha un 3 part article sulla progettazione di aggregazione che potrebbe far luce sul problema.

+0

grazie per il link utile. – rob

Problemi correlati