2010-11-29 2 views
1

Ich bin neu in DDD und muss ein paar Konzepte löschen, damit ich es auf meinem Projekt anwenden kann.Ein Domänenobjekt, das von mehreren Repositories 'gefüllt' wurde

Grundsätzlich habe ich ein Domain-Objekt "Kunde". CustomerRepository würde dieses Domänenobjekt durch Verweis auf die DAL zurückgeben.

Das Problem ist, dass die DAL nicht alle Informationen zur Verfügung stellen kann, die benötigt werden, um das Kundendomänenobjekt zu füllen. Einige Informationen bezüglich des Kunden werden von einer anderen externen Ressource, möglicherweise einem anderen Repository oder einem externen Web-Service, erworben.

Vielleicht sollte ich mein Domainobjekt "Kunde" teilen. Aber was ist, wenn meine Geschäftslogik es mir nicht erlaubt?

Ist es auch nur Repository-Verantwortung, Domain-Objekt zurückzugeben?

Antwort

1

Ja, es sollte die Verantwortung des Repository sein.

Die Lagerung ist heutzutage billig. Vielleicht könnte die Verdopplung dieser Daten Ihre Probleme lösen? Wenn zB customer.firstname aus der Datenquelle # 1 kommt, aber customer.lastname aus der Datenquelle # 2 kommt, können Sie einfach sicherstellen, dass customer.lastname bei der Kundenregistrierung in der Datenquelle # 1 gespeichert wird (+ Prozedur, die bereits registriert wurde) Kunden)?

Eine andere Sache - Ihr Domain-Modell sollte nicht über dieses Problem wissen. Sie sollten versuchen, technische Probleme nicht zu bemerken. Andernfalls - Sie werden schließlich die Isolation verlieren und enden mit künstlichen Domänenobjekten, die dort codiert sind, nur um es laufen zu lassen.

+0

+1. Machen Sie keine Kompromisse bei Ihrer Domain Customer Entity, sonst verteilen Sie die Architekturverschmutzung im gesamten Domain-Modell. Die genaue Einhaltung des Modells ist ein zentraler Grundsatz von DDD. Das Repository ist das natürliche Zuhause für den Umgang mit dem Problem. Gibt es einen Grund, warum nicht auf beide Speicherorte zugegriffen werden kann (d. H. DAL + Web-Service/was auch immer)? – sfinnie

+0

@sfinnie nur Grund gibt es - es könnte technisch schwer sein und könnte die Leistung stark beeinträchtigen. Ansonsten - nichts falsch. –

+0

ok. Ich würde immer noch dafür stimmen, die Domain-Entität vom Standpunkt des Rests der Domain vollständig zu halten. Sie könnten möglicherweise eine Strategie des Typs "Lazy Load" für Repo betrachten. Allerdings würde ich zuerst einfach anfangen und nur dort hingehen, wenn Sie feststellen, dass Sie tatsächlich Leistungsprobleme bekommen. – sfinnie

Verwandte Themen