In meinem Projekt zu Hause sah ich ein Problem bei der Bestimmung eines Typs meines Domain-Objekts.Ist eine DDD-Entität in meinem DDD-Value-Objekt verborgen?
Domain: Busfahrplan
Bounded Kontexte: Routing (öffentliche Verkehrsinfrastruktur, CTX1), Zeitplan (Scheduling, ctx2)
Objekte:
Station - beschreibt eine Bushaltestelle
Route (ctx1) - eine Reihe von Stationen (Route Wegpunkte)
Linie (ctx1) - beschreibt eine Buslinie. Enthält Liste.
Zeitplan (ctx2) - ein benannter Satz von Abweichungen von den Wegpunkten der Route.
Zum Beispiel: eine Bus-Leitung 25A hat zwei Routen [{ST1, ST3, ST20}, {ST20, ST15, ST3, st1}] und 2 Termine (Liste 1 - Route 1, sch2- r2) an diese 2 Routen angeschlossen.
Ohne Zweifel identifiziert ich Linie und Stadt als DDD Einheiten, aggregieren Wurzeln. Außerdem habe ich beschlossen, Routen in Linien zu legen, weil sie außerhalb der Linie und ihres Lebenszyklus keinen Sinn ergeben. Sieht immer noch gut aus.
Der nächste Schritt ist das Definieren des Schedule-Domänenobjekts. Ich wollte es von der Infrastruktur des öffentlichen Verkehrs trennen, also stelle ich es als Einheit in einen anderen Kontext. Das Problem ist, dass ich es jetzt an die Route anhängen muss, die keine Kennung hat.
Meine Ideen:
Put Zeitplan in die Route. Warum es keine Option ist: Die Linie wird fett; erstellt einen Überkontext von ctx1 und ctx2
Machen Route eine Entität. Warum ist es keine Option (ich denke ...): Während es nicht schwer ist, sich eine Route mit einem Identifikator vorzustellen (z.B. Name), ist es kaum genug, sich eine Busroute außerhalb einer Buslinie vorzustellen.
Vielleicht habe ich etwas völlig falsch gemacht?
Sie sagten: '' 'und eine Linie hat Zeitpläne '' '- das ist eine Sache, die ich vermeiden möchte. Ich möchte, dass meine Routingdomäne nichts über die Zeitplandomäne weiß. Das heißt, die "Schedule" -Entität muss den Identifikator einer Route haben. Aber wenn "Route" eine Entität in "Line Aggreate Root" ist, kann ich sie nicht referenzieren, solange sie Teil von Aggreate Root ist und die einzige mögliche Referenz ist hier eine Verbindung zwischen 'Schedule' und' Line'. Habe ich recht? – ovnia
ist alles 1 große Domäne (mit möglicherweise mehreren Aggregatwurzeln). Aber eine Linie, eine Route und ein Zeitplan scheinen sehr miteinander verbunden zu sein. Ihr Fahrplan ist abhängig von der Route. So sehe ich nicht 2 begrenzten Kontext passiert hier – Batavia
+1 Excellent bearbeiten, Batavia. Es ist so leicht, sich daran zu verfangen, wie "wir" es modelliert sehen wollen, aber die Antwort ist wahrscheinlich bereits vorhanden, wenn der Interessenvertreter gefragt wird. Die Elemente der Ubiquitous Language existieren sehr wahrscheinlich bereits vor der Implementierung. Unabhängig davon, was aus Entwicklungsperspektive am sinnvollsten ist, sollte es von der Art und Weise bestimmt werden, wie die Interessengruppen es sehen. Ist dies nicht der Fall, erschwert dies die Kommunikation zwischen dem Entwicklungsteam (das die Domänenexperten/Stakeholder einschließt). –