Può una radice aggregata contenere riferimenti di membri di un'altra radice aggregata?

3

So che al di fuori degli aggregati non posso cambiare nulla all'interno di un aggregato senza passare per la sua radice. Detto questo vorrei sapere se una radice aggregata può contenere riferimenti di membri (oggetti interni) di un'altra radice aggregata? (seguendo le regole DDD)

Esempio:

un calendario contiene un elenco di fasi che contengono un elenco di sequenze che contengono un elenco di assegnazioni

Il calendario è root perché le fasi e le sequenze e le assegnazioni funzionano solo nel contesto di un calendario.

Hai anche Studenti e Gruppi di studenti (chiamati gruppi)

È possibile (seguendo le regole DDD) fare in modo che i gruppi contengano riferimenti alle assegnazioni o passare la radice per accedere ai gruppi dalle assegnazioni?

Grazie.

    
posta Rushino 11.02.2011 - 00:08
fonte

4 risposte

0

Se comprendo correttamente la tua domanda, mi stai chiedendo le nozioni di base sui diagrammi di classe UML ?

Would like to know if its possible to hold multiple references of an aggregate root (groups) inside another aggregate root (calendar) member ?

Le classi possono essere associate con qualsiasi altra classe, nel modo che preferiscono. Questo è l'intero scopo di progettare un sistema.

Also how a list of references are represented in UML ? it is a simple relation ?

Un elenco di riferimenti può essere aggregazione (ha a) o composizione (possiede a).

But assignations must hold multiple references to groups of students. (Must work two sides)

Questo non è chiaro, stai parlando di una relazione bidirezionale tra gruppi e studenti? In ogni caso, forse questo articolo su molti a molte relazioni puoi darti qualche idea.

Se non esistesse "studente", significherebbe "gruppo di studenti"? Probabilmente no. Se non esistesse qualcosa come "gruppo di studenti", ci sarebbe un significato per "studente"? Probabilmente.

UPDATE:

It is possible (fellowing DDD rules) to make Groups holding references of assignations or it need to pass by the root for accessing groups from assignations ?

Non ho mai progettato un sistema con DDD in mente, ma leggendo l'articolo precedentemente menzionato. Direi, cerca di impedirlo quando non è necessario , se non ci sono problemi di prestazioni , accedi ai gruppi attraverso le assegnazioni. Cioè, se questa è la radice aggregata scelta correttamente.

Applicare l'esempio "studente, gruppo di studenti" a tutti i tuoi elementi per scegliere le radici aggregate corrette.

    
risposta data 11.02.2011 - 00:56
fonte
0

Qual è il significato di un'assegnazione? Se esiste una relazione naturale tra gruppi e assegnazioni, il gruppo può avere un riferimento diretto alle sue assegnazioni. Ma come hai notato, le modifiche alle assegnazioni possono essere apportate solo tramite il Calendario se questa è la radice.

Penso che abbiamo bisogno di maggiori dettagli sulla relazione tra calendari, fasi, assegnazioni e gruppi. Cos'è un'Assegnazione, come viene utilizzata?

    
risposta data 11.02.2011 - 02:38
fonte
0

Farò alcune assunzioni sulla struttura dei dati e dirò

altrimenti non c'è modo di stabilire e mantenere il riferimento. Le diverse radici aggregate avrebbero ancora il loro repository.

hey, se sbaglio, qualcuno (Pierre, probabilmente) mi correggerà con un link e poi impareremo entrambi qualcosa.

    
risposta data 11.02.2011 - 03:39
fonte
0

Comprensione:

Un'entità esterna può chiedere a una radice una copia di un'entità all'interno di quell'aggregato per il proprio uso. Tuttavia, la root non dovrebbe restituire un riferimento all'entità reale. Solo la radice è autorizzata a modificare le proprietà nell'aggregato in modo che possa mantenere uno stato valido.

Può essere difficile applicare queste regole nel codice (è facile fornire un riferimento a una raccolta e aggiungerla / rimuoverla direttamente invece di chiedere la radice AddItem / RemoveItem).

    
risposta data 07.03.2011 - 07:03
fonte

Leggi altre domande sui tag