Zunächst einmal finde ich den Wikipedia-Artikel, auf den Sie sich beziehen, nicht sehr gut, vor allem, weil er eine Reihe von Dingen referenziert, die nur in Verbindung mit Domain Driven Design stehen und niemanden über die Praxis aufklären.
Aber als jemand, der sich Domain Driven Design zu Herzen genommen hat (was in der Regel eher von DDD als von 3D ausgeht), fühlte ich, dass die Grundlagen von DDD immer offensichtlich sind, wenn man so viel wie das erste Kapitel von Eric liest Evans 'Buch. Da es sich jedoch um eine Reihe von Mustern und Praktiken handelt, ist es nicht so einfach, eine 3-Satz-Zusammenfassung dessen zu geben, was es ist und welche Vorteile es bietet, ohne auf Einzelheiten einzugehen. Welche Details bei einer Person mitschwingen, kann ebenfalls sehr unterschiedlich sein. Es ist wahrscheinlich, dass ich vor 10 Jahren den Punkt überhaupt nicht gesehen hätte.
DDD ist keine Wunderwaffe. Wenn dies vernünftig gemacht wird, geht es darum, einen handwerklichen Ansatz für die Erstellung von Software zu verfolgen und die Notwendigkeit zu erkennen, die kognitive Reibung zwischen Entwicklungsteams und den Unternehmen, für die sie Software erstellen, zu verringern. Eine der wichtigsten Methoden ist es, eine Ebene zu haben, in der das vom Softwareteam und vom Geschäftsteam verwendete Domänenvokabular so gut wie möglich übereinstimmt. Sie bauen diese Ebene iterativ auf, wenn Sie das Geschäftsproblem verstehen, das Sie lösen möchten. Wenn Geschäftslogik sinnvoll in dieser Ebene codiert wird, die von allen verwickelten Abhängigkeiten isoliert ist, die Unternehmensanwendungen normalerweise haben, indem sie Interaktionen mit diesen Systemen auf Schnittstellen ausgliedern, wird die Sprache, die in der eigentlichen Domänenebene verwendet wird, schließlich ziemlich präzise, offensichtlich und lesbar.
In Anbetracht der Form, in der sich die meisten Unternehmenssoftwareprodukte in der Praxis befinden, klingt DDD möglicherweise wie eine Wunderwaffe, da die meisten Unternehmenssoftwareprodukte so schlecht voneinander getrennt sind, dass sie fast nicht mehr getestet werden können und das Softwareteam große Angst vor Veränderungen hat Sie haben keine Ahnung, was die Nebenwirkungen von scheinbar sogar geringfügigen Codeänderungen sein könnten, wohingegen eine ordnungsgemäß faktorisierte Domänenschicht unabhängig testbar und überprüfbar sein wird. Tatsächlich erkennt DDD jedoch an, dass Systeme selten isoliert existieren. DDD enthält Bewältigungsmuster für Legacy-Systeme (Anti-Korruptions-Ebene, begrenzte Kontexte, um nur einige zu nennen).
Wenn Sie objektorientiertes Design üben, einschließlich der Disziplin der losen Kopplung, und Unit-Tests ziemlich religiös üben, Code gnadenlos umgestalten und beim Aufbau Ihres Systems mit Domänenexperten zusammenarbeiten, werden Sie im Grunde genommen ein Ergebnis erzielen, das ist Grundsätzlich sprechen die Befürworter von Domain-Design.
In Evans 'Buch werden einige spezifische Muster beschrieben, die sich hauptsächlich auf die Entwicklung von Unternehmenssoftware beziehen, und einige, die ziemlich universelle Prinzipien darstellen. Im Grunde ist DDD jedoch ein pragmatischer Ansatz für die Softwareentwicklung, der im Laufe der Zeit den Aufbau von technischen Schulden verringern kann. und machen Sie Ihre Kunden glücklicher, weil Sie in der Lage sind, die gleiche Sprache miteinander zu sprechen und bessere Lösungen zu liefern, da Sie sich besser verstehen.