Odpowiedzi:
Po pierwsze, jeśli nie wiesz, że go potrzebujesz, to możliwe, że go nie potrzebujesz. Jeśli nie rozpoznajesz problemów, które rozwiązuje DDD, być może nie masz tych problemów. Nawet zwolennicy DDD często podkreślają, że DDD jest przeznaczony tylko dla dużych (> 6-miesięcznych) projektów.
Zakładając, że nadal czytasz w tym momencie, moje podejście do DDD jest następujące:
DDD polega na próbie uczynienia z oprogramowania modelu rzeczywistego systemu lub procesu. Korzystając z DDD, masz ściśle współpracować z ekspertem w dziedzinie, który może wyjaśnić, jak działa system rzeczywisty. Na przykład, jeśli opracowujesz system, który obsługuje obstawianie zakładów na wyścigi konne, ekspert w dziedzinie może być doświadczonym bukmacherem.
Pomiędzy sobą a ekspertem od domeny budujesz wszechobecny język (UL), który jest w zasadzie koncepcyjnym opisem systemu. Chodzi o to, że powinieneś być w stanie zapisać to, co robi system, w taki sposób, aby ekspert domeny mógł go odczytać i sprawdzić, czy jest poprawny. W naszym przykładzie bukmacherskim wszechobecny język obejmowałby definicje słów takich jak „wyścig”, „zakład”, „kurs” i tak dalej.
Koncepcje opisane przez UL będą stanowić podstawę projektu obiektowego. DDD zapewnia pewne jasne wskazówki dotyczące interakcji między obiektami i pomaga podzielić obiekty na następujące kategorie:
DDD zaleca również kilka wzorów:
W tym momencie muszę powiedzieć, że jeśli wcześniej nie słyszałeś o żadnej z tych rzeczy, nie powinieneś próbować używać DDD w żadnym projekcie, na który masz termin. Przed przystąpieniem do DDD należy zapoznać się ze wzorami projektowymi i wzorcami projektowymi dla przedsiębiorstw . Znając je, DDD jest o wiele łatwiejszy do zrozumienia. I, jak wspomniano powyżej, istnieje bezpłatne wprowadzenie do DDD dostępne w InfoQ (gdzie można również znaleźć rozmowy na temat DDD).
Weźmy StackOverflow jako przykład. Zamiast zacząć projektować niektóre formularze internetowe, najpierw koncentrujesz się na modelowaniu obiektowym podmiotów w domenie problemowej, na przykład użytkowników, pytań, odpowiedzi, głosów, komentarzy itp. Ponieważ projekt opiera się na szczegółach problemu domena nazywa się projektowaniem opartym na domenie .
Możesz przeczytać więcej w książce Erica Evansa .