So repräsentieren Sie Referenzen in DDD -Unternehmen
Posted: 07 Apr 2025, 23:52
Ich versuche, DDD in den Griff zu bekommen und habe das Gefühl, dass ich in Bezug auf Entitäten, Aggregate, aggregierte Wurzeln, Repositorys und Wertobjekte und wie man diese Konzepte in Code tatsächlich darstellt. Nehmen wir an, ich habe die beiden folgenden Aggregate < /p>
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
< /code>
Ein Benutzer kann ein Mitglied einer Diskussionsgruppe sein, aber die Benutzereinheit gehört nicht zum gleichen Aggregat. Es gibt jedoch immer noch eine Beziehung zwischen den beiden (eine Referenz). Bei der Betrachtung des tatsächlichen Codes würde ich aggregierte Beziehungen wie (mit C#) implementieren: < /p>
interface IDiscussionGroup {
string Name { get; }
IList { get; }
...
}
< /code>
i.e mit einfachen C# Referenzen. Würden Sie DDD -Referenzen implementieren (wie oben beschrieben) i dieselbe Weise, d. H.: < /p>
interface IUser {
IDiscussionGroup MemberOf { get; }
...
}
< /code>
von sollte man ein anderes Konstrukt verwenden, um die schwächere Art der Beziehung anzuzeigen? < /p>
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
< /code>
Ein Benutzer kann ein Mitglied einer Diskussionsgruppe sein, aber die Benutzereinheit gehört nicht zum gleichen Aggregat. Es gibt jedoch immer noch eine Beziehung zwischen den beiden (eine Referenz). Bei der Betrachtung des tatsächlichen Codes würde ich aggregierte Beziehungen wie (mit C#) implementieren: < /p>
interface IDiscussionGroup {
string Name { get; }
IList { get; }
...
}
< /code>
i.e mit einfachen C# Referenzen. Würden Sie DDD -Referenzen implementieren (wie oben beschrieben) i dieselbe Weise, d. H.: < /p>
interface IUser {
IDiscussionGroup MemberOf { get; }
...
}
< /code>
von sollte man ein anderes Konstrukt verwenden, um die schwächere Art der Beziehung anzuzeigen? < /p>