Gdzie znajdę dobre przykłady DDD? [Zamknięte]

390

Uczę się o projektowaniu opartym na domenie, ale są pewne praktyczne problemy, które są dla mnie mylące, że myślę, że zobaczenie dobrych próbek może wyjaśnić.

Czy ktoś zna jakieś dobre działające próbki kodu, które dobrze wykonują modelowanie podstawowych koncepcji DDD?

Szczególnie zainteresowany

  • Przykładowy model domeny
  • Repozytoria
  • Korzystanie z usług domenowych / aplikacyjnych
  • Obiekty wartości
  • Łączne korzenie
jlembke
źródło
42
Takie debaty IHMO bardzo pomogą. Czasami więcej niż proste pytanie. Np. Moglibyśmy to zmienić w pytaniu: „Gdzie znajdę dobre przykłady DDD?” i działa w formacie pytań i odpowiedzi.
Gizzmo,
1
Uważam, że przykład „zwinnego projektu zarządzania” z książki Vaughna Vernona jest bardzo pouczający. ilustruje praktyczną implementację wyliczanych bloków, a także radzenie sobie z różnymi ograniczonymi kontekstami, kod można znaleźć tutaj: github.com/VaughnVernon/IDDD_Samples
Mehdi.
1
Poleciłbym
Vladimir
1
Możesz zajrzeć tutaj: dzone.com/storage/assets/…
Chaklader Asfak Arefe
Mam go tutaj: github.com/appie2go/steal-this-code
Clark Kent

Odpowiedzi:

199

Trudność z próbkami DDD polega na tym, że często są one bardzo specyficzne dla domeny, a techniczna implementacja wynikowego systemu nie zawsze pokazuje decyzje projektowe i przejścia dokonane podczas modelowania domeny, która tak naprawdę jest rdzeniem DDD. W DDD chodzi o proces bardziej niż o kod. (jak niektórzy twierdzą, najlepszą próbką DDD jest sama książka!)

To powiedziawszy, dobrze skomentowana przykładowa aplikacja powinna przynajmniej ujawnić niektóre z tych decyzji i dać ci kierunek w zakresie dopasowania modelu domeny do wzorców technicznych zastosowanych do jego wdrożenia.

Nie określiłeś, którego języka używasz, ale dam ci kilka w kilku różnych językach:

DDDSample - próbka Java, która odzwierciedla przykłady, o których mówi Eric Evans w swojej książce . Jest to dobrze skomentowane i pokazuje wiele różnych metod rozwiązywania różnych problemów z oddzielnymi ograniczonymi kontekstami (tj. Warstwą prezentacji). Nad tym aktywnie pracujemy, więc regularnie sprawdzaj dostępność aktualizacji.

dddps - przykładowa aplikacja C # Tima McCarthy'ego do jego książki, .NET-Driven Design with C #

Architektura S # arp - pragmatyczny przykład w języku C #, nie jako „czyste” podejście DDD, być może z powodu braku prawdziwego problemu z domeną, ale wciąż ładne czyste podejście.

W przypadku wszystkich tych przykładowych aplikacji prawdopodobnie najlepiej jest sprawdzić najnowsze wersje łącza SVN / cokolwiek, aby naprawdę zorientować się w myśleniu i wzorcach technologicznych, ponieważ powinny one być regularnie aktualizowane.

Michael Hart
źródło
2
Jak wspomniano w @Mehdi w oryginalnym komentarzu do pytania, powinieneś dodać wspaniały przykład od Vaughna Vernona. Jest to najlepsza jak dotąd implementacja wzorca DDD, jaką kiedykolwiek widziałem: github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy
Wiem, że to jest stare, ale przykład z dddpswydaje się być całkowicie anemiczny i faktycznie przeciwny OOP. Żaden z obiektów domeny nie zachowuje się, a klasy warstw usług są w zasadzie delegacją 1: 1 do repozytoriów. Nie jestem pewien, czy należy to uznać za „dobry” przykład DDD? Wciąż się uczę, ale przykłady w architekturze S # arp wydają się być lepszym przykładem dla osób uczących się DDD, ponieważ obejmują zarówno stan, jak i zachowanie, co jest dobrym projektem OOP.
David Anderson
Powinieneś teraz dodać doskonałą próbkę Vaugnha Vernona, autora projektu Implemented Domain Driven Design (IDDD): github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy
23

Nie źródłowe projekty na powiedzenie, ale natknąłem się na Parleys.com, który ma kilka dobrych filmów, które dość dobrze obejmują DDD (wymaga Flasha):

Uważam, że są one o wiele bardziej pomocne niż prawie nieistniejące przykłady DDD, które są obecnie dostępne.

Todd Smith
źródło
linki nie działają
sidgate
11

Sprawdź projekt Silk . Pokazuje nie tylko DDD, ale także inne najnowocześniejsze wzory. To doskonały zasób dla każdego programisty. Pełny przegląd projektu można znaleźć na MSDN .

użytkownik996985
źródło
Kod źródłowy nie jest już dostępny :(
Dherik