Frage

Ich habe im Repository Pattern suchen als eine Möglichkeit vor kurzem alle Details der Persistenz unter den Teppich von Bürsten, wo der Client-Code betroffen ist. Während um sie zu lesen scheint, dass ein Repository ist / kann [in der Regel?] Verantwortlich sein für Aggregate und nicht nur geradlinig Klassen.

Für mich Sinn machen, wie Sie eine Klasse definieren haben könnten Beiträge und eine andere Definition von Kommentare . Dies ist ein idealer Kandidat für ein Aggregat, da die beiden sind sehr eng miteinander verbunden. Aber wie würde ich vertrete einen Nutzer Klasse und ihre Beziehung zu seinem Beiträge

Wäre es sinnvoll, zu aggregieren Benutzern mit dem Beiträge / Kommentare Aggregate machen, oder halten Sie Nutzer für sich allein und einfach eine Verbindung über eine gute altmodische Referenz hat?

Ich habe die Antwort versucht suchen mich Google verwenden, aber viele der Beispiele, die ich finden sind nur Stand-alone. dh Beiträge / Kommentar oder vielleicht Auftrag und Orderline usw. Ich kann nichts finden, dass, wie andere verwandte Klassen zusammen passen zeigt.

Ich bewerbe mich nicht auf etwas Bestimmtes, obwohl PHP oder Java / C # wahrscheinlich der Bereich sein, möchte ich mit diesen Ideen aussehen würde. Auf jeden Fall bin ich zu erforschen nur und versuche, meinen Kopf um einige dieser Ideen und Konzepte, bevor ich laufen weg und ein Monster erstellen. :)

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

Das Repository-Muster ist ziemlich lose definiert und muss nicht unbedingt eine Beziehung zum Gesamt Muster. Wenn Sie jedoch auf die DDD Weise abonnieren, Dinge zu tun, dann ja, Repositories sind einzigartig für Aggregate.

Lassen Sie sich also auf diesem von der DDD Sicht einen Blick. DDD sagt, dass Objekte innerhalb eines Aggregats einen Verweis auf ein anderes Aggregat Wurzel haben, aber Objekte innerhalb eines Aggregats kann nur über die Wurzel zugegriffen werden. Als Faustregel für die Aggregate zu bestimmen ist, was gelöscht werden soll, wenn die Wurzel zu löschen. Allerdings DDD rät von der Verwendung von Beziehungen mehr als die meist Methoden sagen, dass, nur weil eine Beziehung in einer Domäne vorhanden ist, ist es nicht in Ihrem Modell der Domäne existieren muss, so dass nur im Auge behalten.

In Ihrem Fall, wenn Sie einen Beitrag löschen Ich gehe davon aus, dass Sie auch die Kommentare löschen würden, aber nicht den Benutzer, der die Post oder anderen Nutzern, die auf ihn kommentiert. Daher sind Sie richtig die Post / Kommentar Aggregat bei der Definition, aber es wäre nicht sinnvoll, Gruppe Benutzer in das Aggregat machen.

Benutzer, sein eigenes Aggregat ist, kann eine Beziehung zu allen ihren Posten enthalten, weil Schreiben Sie die Aggregat Wurzel ist. Sie können diese eine Methode auf dem PostRepository implementieren alle die Beiträge von einem bestimmten Benutzer zu erhalten. Hoffe, das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top