J'essaie de me familiariser avec le DDD et j'ai l'impression d'avoir une bonne compréhension des entités, des agrégats, des racines d'agrégats, des référentiels et des objets de valeur, ainsi que de la manière de représenter ces concepts dans le code.
Ce qui me pose encore problème, c'est la manière de représenter les références (c'est-à-dire les relations qui ne constituent pas un agrégat) dans le code réel. Disons que j'ai les deux agrégats suivants
DISCUSSIONGROUP (entity, aggregate root)
+name: string
+ENTRY (entity)
+title: string
+message: string
+timestamp: date
+madeByUser: USER
USER (entity, aggregate root)
+name: string
+email: string
+memberOf: DISCUSSIONGROUP
Un utilisateur peut être membre d'un groupe de discussion mais l'entité utilisateur n'appartient pas au même agrégat. Il existe néanmoins une relation entre les deux (une référence). En regardant le code réel, j'implémenterais les relations d'agrégat comme suit (en utilisant C#) :
interface IDiscussionGroup {
string Name { get; }
IList<IEntry> { get; }
...
}
C'est-à-dire en utilisant de simples références C#. Implémenteriez-vous les références DDD (telles que décrites ci-dessus) de la même manière, c'est-à-dire en utilisant des références C# simples ?
interface IUser {
IDiscussionGroup MemberOf { get; }
...
}
ou faut-il utiliser une autre construction pour indiquer le type de relation le plus faible ?