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

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.



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.


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.


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 .


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



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.