Ich habe eine Entität namens Person
. Es stellt eine Person dar, die Informationen mit anderen Personen teilen kann. Ich definiere auch zwei Entitäten TelephoneNumber
und Address
, die einige Informationen darstellt. Jede Person kann die Datenbank mit ihrer Telefonnummer und Adresse als Instanzen von TelephoneNumber
und Address
bereitstellen und die bereitgestellten Informationen gehören nur dieser Person. Dann kann eine Person, die eine bestimmte Informationstelefonnummer und -adresse besitzt, diese über die Einheit Association
miteinander verknüpfen und kann diese Zuordnung anderen Personen mitteilen.Repository-Methoden oder aggregierte Root-Methoden?
Ich versuche Domain-basierte Design-Methodik zu folgen. Da eine Telefonnummer oder Adresse nur einer Person gehört, sind die Identitäten TelephoneNumber
und Address
lokal zu dieser Person
Identität. Also, ich denke, es gibt ein Aggregat, das die Entitäten Person
, TelephoneNumber
, Address
und Association
enthält. Die Wurzel des Aggregats wäre die Entität Person
. Also, natürlich brauche ich ein Repository für die Entität Person
, da es das aggregierte Root ist, und ich kann ein Personenelement aus einem Datenspeicher mit diesem Repository "rekonstituieren".
Jetzt möchte eine bestimmte Person eine Telefonnummer und eine Adresse hinzufügen und möchte sie zuordnen. Unter der Annahme, dass die Person bereits im Datenspeicher vorhanden ist, erhalte ich die Person
in Frage mit dem Repository. Wie füge ich dann die Informationen hinzu?
Ich sehe zwei Ansätze. Verwenden Sie addTelephoneNumber
und addAddress
Methoden in der Person
Einheit oder mit Repositorys für TelephoneNumber
, Address
und Association
.
Angenommen, der erste Ansatz ist der richtige, was müssen diese Methoden tun? Wie können diese Methoden Informationen zum Datenspeicher hinzufügen? Ich präzisiere, dass ich eine Traversierungsrichtung für die Assoziationen zwischen Person und Telefonnummer/Adresse ausgewählt habe, von Telefonnummer/Adresse zu Person. Jedes Mal, wenn ich eine Person abrufe, erhalte ich nicht alle ihre Telefone und Adressen. In diesem Fall, wenn eine Person ein Telefon mit der addTelephoneNumber-Methode hinzufügen möchte, was macht die Methode? Wo wird das neue Telefon hingestellt?
PS: Die Telefonnummern und die Adressen einer Person gehören nicht unbedingt zu denen dieser Person, sie sind nur Informationen, die diese Person kennt und mit anderen Personen teilen möchte.
Dies wäre viel einfacher zu verstehen, wenn Sie ein genaueres Beispiel machen. Ich bin sicher, dass Ihre Entitäten in Ihrem realen System nicht "X" und "Y" genannt werden. – Marius
@Marius Es ist fertig. Ich dachte, es wäre besser, generisch zu bleiben, aber ich denke, du hast Recht, da die Lösungen im Allgemeinen von der Domäne abhängen. –
Müssen das Telefon und die Adresse, die Sie hinzufügen möchten, bereits im Datenspeicher vorhanden sein oder möchten Sie sie erstellen? – guillaume31