Tips voor het bepalen van aggregates
De levenscyclus van de objecten in een aggregate is gekoppeld. Als een aggregate root bijvoorbeeld verwijderd wordt, dan worden ook alle andere objecten uit deze aggregate verwijderd.
In sommige gevallen is het zo dat een bepaald object wel kan bestaan zonder anderen, maar andersom niet. Dit object is dan waarschijnlijk een geschikte aggregate root.
Probeer een aggregate zo klein mogelijk te maken. Dus zo min mogelijk klassen, maar ook zo min mogelijk instanties van elke klasse.
Om te voorkomen dat je een entiteit in meerdere aggregates nodig hebt, kun je vaak goed werken met verwijzingen naar de betreffende entiteit.
Dupliceren van data hoeft niet erg te zijn. Dit is zeker het geval als de gekopieeerde data niet meer hoeft te veranderen.
Dit kan helpen bij het kleiner houden van een aggregate.
Het kan nodig zijn dat een aggregate meerdere invarianten tegelijkertijd moet bewaken, maar dit kan ook tot problemen leiden. Controleer of de invarianten met dezelfde functionaliteit te maken hebben en of de aggregate niet te groot wordt.
Vraag jezelf af of een bepaalde regel die lijkt op een invariant daadwerkelijk een invariant is die de software moet afdwingen. Meestal kun je dit alleen bepalen samen met een domainexpert.