Erstens, wenn Sie nicht wissen, dass Sie es brauchen, ist es möglich, dass Sie es nicht brauchen. Wenn Sie die Probleme, die DDD löst, nicht erkennen, haben Sie diese Probleme möglicherweise nicht. Selbst DDD-Befürworter werden häufig darauf hinweisen, dass DDD nur für große Projekte (> 6 Monate) vorgesehen ist.
Angenommen, Sie lesen zu diesem Zeitpunkt noch, dann sehe ich DDD folgendermaßen:
Bei DDD geht es darum, Ihre Software zu einem Modell eines realen Systems oder Prozesses zu machen. Bei der Verwendung von DDD sollten Sie eng mit einem Domain-Experten zusammenarbeiten , der Ihnen erklären kann, wie das reale System funktioniert. Wenn Sie beispielsweise ein System entwickeln, das die Platzierung von Wetten auf Pferderennen übernimmt, ist Ihr Domain-Experte möglicherweise ein erfahrener Buchmacher.
Zwischen Ihnen und dem Domain-Experten erstellen Sie eine allgegenwärtige Sprache (UL), die im Grunde eine konzeptionelle Beschreibung des Systems darstellt. Die Idee ist, dass Sie in der Lage sein sollten, die Funktionsweise des Systems so aufzuschreiben, dass der Domänenexperte sie lesen und überprüfen kann, ob sie korrekt ist. In unserem Wettbeispiel würde die allgegenwärtige Sprache die Definition von Wörtern wie "Rasse", "Wette", "Gewinnchancen" usw. enthalten.
Die von der UL beschriebenen Konzepte bilden die Grundlage für Ihr objektorientiertes Design. DDD bietet eine klare Anleitung zur Interaktion Ihrer Objekte und hilft Ihnen, Ihre Objekte in die folgenden Kategorien zu unterteilen:
- Wertobjekte, die einen Wert darstellen, der möglicherweise Unterteile enthält (z. B. kann ein Datum einen Tag, einen Monat und ein Jahr haben).
- Entitäten, die Objekte mit Identität sind . Zum Beispiel hat jedes Kundenobjekt seine eigene Identität, sodass wir wissen, dass zwei Kunden mit demselben Namen nicht derselbe Kunde sind
- Aggregierte Wurzeln sind Objekte, die andere Objekte besitzen. Dies ist ein komplexes Konzept und basiert auf der Annahme, dass einige Objekte nur dann sinnvoll sind, wenn sie einen Eigentümer haben. Zum Beispiel ist ein 'Order Line'-Objekt ohne eine' Order 'nicht sinnvoll. Wir sagen also, dass die Order die aggregierte Wurzel ist und Order Line-Objekte nur über Methoden im Order-Objekt bearbeitet werden können
DDD empfiehlt auch mehrere Muster:
- Repository , ein Muster für die Persistenz (Speichern und Laden Ihrer Daten, normalerweise in / aus einer Datenbank)
- Factory , ein Muster für die Objekterstellung
- Service, ein Muster zum Erstellen von Objekten, die Ihre Hauptdomänenobjekte manipulieren, ohne selbst Teil der Domäne zu sein
An dieser Stelle muss ich sagen, dass Sie, wenn Sie noch nichts davon gehört haben, nicht versuchen sollten, DDD für ein Projekt zu verwenden, für das Sie eine Frist haben. Bevor Sie DDD versuchen, sollten Sie mit Entwurfsmustern und Unternehmensentwurfsmustern vertraut sein . Wenn Sie diese kennen, ist DDD viel einfacher zu erfassen. Und wie oben erwähnt, gibt es eine kostenlose Einführung in DDD bei InfoQ (wo Sie auch Vorträge über DDD finden können).
Nehmen Sie als Beispiel StackOverflow. Anstatt mit dem Entwerfen einiger Webformulare zu beginnen, konzentrieren Sie sich zunächst auf die objektorientierte Modellierung der Entitäten in Ihrer Problemdomäne, z. B. Benutzer, Fragen, Antworten, Abstimmungen, Kommentare usw. Da das Design von den Details des Problems abhängt Domain heißt domänengesteuertes Design .
Sie können mehr in Eric Evans 'Buch lesen .
quelle