Ga naar hoofdinhoud

Tips voor het bepalen van aggregates

tip 1 Levenscyclus

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.

tip 2 Grootte van een aggregate

Probeer een aggregate zo klein mogelijk te maken. Dus zo min mogelijk klassen, maar ook zo min mogelijk instanties van elke klasse.

tip 3 Verwijzing naar entity buiten aggregate

Om te voorkomen dat je een entiteit in meerdere aggregates nodig hebt, kun je vaak goed werken met verwijzingen naar de betreffende entiteit.

tip 4 Dupliceren

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.

tip 5 Aantal invarianten

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.

tip 6 Echte invariant?

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.