De laatste tijd ben ik mezelf een beetje in domain driven design aan het inlezen. Ik merk dat ik al een tijdje een soort-van het gedachtegoed gebruik en dat het lezen over DDD mijn eigen "uitvindingen" bevestigt.
Echter zit ik nog wat met aggregates in mijn maag. Waarvoor gebruik je het precies voor? Is het puur een leeg omhulsel? Als ik lees over aggregates link ik dit direct (ik schrijf nu eenmaal veel php) aan een Doctrine\Common\Collections\Collection: een simpele interface die een soort object-georienteerde array is.
Een onderdeel van de collection:
Je kan zo best veel business logic kwijt in een collection. Naast dit soort zaken (filtering) kan ik ook bijvoorbeeld sorteren in een collectie. Echter, is dat een functie van een aggregate?
Ik zou niet zo snel een ander goede plek weten binnen DDD waar je filtering en sortering kan toepassen. Business logic van dit soort dingen zou ik liefst niet in entiteiten kwijt zijn. Value objects zijn niet echt toepasbaar lijkt me. Is dit een service taak? Dat is meer "alles wat je niet elders kwijt kan", maar juist een aggregate kan wel filtering/sortering bevatten, lijkt me.
Iemand enige ervaring hiermee?
Echter zit ik nog wat met aggregates in mijn maag. Waarvoor gebruik je het precies voor? Is het puur een leeg omhulsel? Als ik lees over aggregates link ik dit direct (ik schrijf nu eenmaal veel php) aan een Doctrine\Common\Collections\Collection: een simpele interface die een soort object-georienteerde array is.
Een onderdeel van de collection:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| interface Collection { // meer hier /** * Returns all the elements of this collection that satisfy the predicate p. * The order of the elements is preserved. * * @param Closure $p The predicate used for filtering. * @return Collection A collection with the results of the filter operation. */ function filter(Closure $p); /** * Applies the given function to each element in the collection and returns * a new collection with the elements returned by the function. * * @param Closure $func * @return Collection */ function map(Closure $func); } |
Je kan zo best veel business logic kwijt in een collection. Naast dit soort zaken (filtering) kan ik ook bijvoorbeeld sorteren in een collectie. Echter, is dat een functie van een aggregate?
Ik zou niet zo snel een ander goede plek weten binnen DDD waar je filtering en sortering kan toepassen. Business logic van dit soort dingen zou ik liefst niet in entiteiten kwijt zijn. Value objects zijn niet echt toepasbaar lijkt me. Is dit een service taak? Dat is meer "alles wat je niet elders kwijt kan", maar juist een aggregate kan wel filtering/sortering bevatten, lijkt me.
Iemand enige ervaring hiermee?