Der Umgang mit verschachtelten Aggregaten in DDD
-
18-09-2019 - |
Frage
Ich bin gerade in DDD die ersten Schritte, und ich einige Probleme, herauszufinden, wie die relationale Natur meiner Daten aufzunehmen. Ich habe, was ich glaube, dass meine Aggregat Wurzel kommt in Betracht, aber das Aggregat auch ein Aggregat von seiner eigenen. Viele wollen nicht das Gesetz der Demeter zu verletzen, ich frage mich, wenn ich über diese falsch denke und hoffe, dass einige DDD Experten einen Einblick bieten können.
Meine Aggregat Wurzel ist mein Account
Objekt, das sich aus den zahlreichen AccountElement
Einheiten hat, die sich logische Gruppierungen von einzelnen ProductComponent
Einheiten sind.
Ein AccountElement
außerhalb des Kontexts eines Account
hat keine Bedeutung, so bin ich mit meiner Schlussfolgerung komfortabel, dass das Account
Objekt meine Aggregat Wurzel ist, und Ich gehe davon aus, dass Unternehmen ein Aggregat Elements
Eigenschaft. Es ist die ProductComponent
Sammlung, die mich verwirrt hat. Dieses Aggregat hat keine Bedeutung außerhalb eines AccountElement
und wirklich hat keine Bedeutung außerhalb eines Account
.
Ich glaube nicht, dass ich meine Art und Weise individuelle ProductComponent
Objekte zugreifen sollte es durch Punktierung, wie:
var reference = account.Elements(0).ProductComponents(0).ReferenceCode;
Aber zur gleichen Zeit macht es keinen Sinn (aus einer Domäne Perspektive) ein ProductComponent
direkt von einer Account
Einheit zugreifen zu können.
Ich bin sicher, dass dies alles ein wenig schwierig ist, ohne Wissen meiner Domain zu verstehen, aber ich hoffe, es ist genug, um etwas gutes Feedback zu erhalten.
Lösung
Der Artikel Robert verknüpft ist gut. Ich mochte noch hinzufügen, dass, wenn ProductComponent existiert nur im Rahmen von AccountElement und AccountElement existiert nur im Zusammenhang mit dem Konto, dann durch Erweiterung ProductComponent ist im Zusammenhang mit dem Konto.