Onde encontro bons exemplos para DDD? [fechadas]


390

Estou aprendendo sobre Design Orientado a Domínio, no entanto, existem alguns problemas práticos que são confusos para mim e que acho que ver algumas boas amostras pode esclarecer.

Alguém conhece algumas boas amostras de código de trabalho que fazem um bom trabalho de modelagem de conceitos básicos de DDD?

Particularmente interessado em

  • Um modelo de domínio ilustrativo
  • Repositórios
  • Uso de Serviços de Domínio / Aplicativos
  • Objetos de valor
  • Raízes agregadas

42
Os debates da IHMO ajudarão muito. Às vezes, mais do que uma simples pergunta. Por exemplo, poderíamos mudar isso em uma pergunta: "Onde encontro bons exemplos para DDD?" e funciona com o formato de perguntas e respostas.
Gizzmo 10/10

11
Eu achei o exemplo do "projeto de gerenciamento ágil" do livro de Vaughn Vernon muito instrutivo. ilustra a implementação prática dos blocos de construção que você enumera, além de lidar com diferentes contextos limitados, você pode encontrar o código aqui: github.com/VaughnVernon/IDDD_Samples
Mehdi.

11
Eu recomendaria este exemplo: github.com/vkhorikov/DddInAction
Vladimir

11
Você pode dar uma olhada aqui: dzone.com/storage/assets/…
Chaklader Asfak Arefe

Respostas:


199

A dificuldade com amostras de DDD é que elas geralmente são muito específicas do domínio e a implementação técnica do sistema resultante nem sempre mostra as decisões e transições de design que foram feitas na modelagem do domínio, que é realmente o cerne do DDD. DDD é muito mais sobre o processo do que sobre o código. (como alguns dizem, a melhor amostra de DDD é o próprio livro!)

Dito isso, um exemplo de aplicativo bem comentado deve revelar pelo menos algumas dessas decisões e fornecer algumas orientações em termos de correspondência do modelo de domínio com os padrões técnicos usados ​​para implementá-lo.

Você não especificou qual idioma está usando, mas darei alguns em alguns idiomas diferentes:

DDDSample - uma amostra de Java que reflete os exemplos de Eric Evans mencionados em seu livro . Isso é bem comentado e mostra vários métodos diferentes de solução de vários problemas com contextos limitados separados (por exemplo, a camada de apresentação). Ele está sendo trabalhado ativamente, portanto verifique-o regularmente para atualizações.

dddps - Exemplo de aplicativo C # de Tim McCarthy para seu livro, Design Orientado a Domínio .NET com C #

S # arp Architecture - um exemplo pragmático do C #, não como uma abordagem DDD "pura", talvez devido à falta de um problema de domínio real, mas ainda assim uma abordagem limpa e agradável.

Com todos esses aplicativos de amostra, é provavelmente melhor verificar as versões mais recentes do SVN / o que quer que seja para realmente ter uma idéia dos padrões de pensamento e tecnologia, pois eles devem ser atualizados regularmente.


2
Como mencionado @Mehdi no comentário da pergunta original, você deve adicionar o maravilhoso exemplo de Vaughn Vernon. É a melhor implementação do padrão DDD até agora que eu já vi: github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy

Eu sei que isso é antigo, mas o exemplo de dddpsparece ser totalmente anêmico e contrário ao OOP, na verdade. Nenhum dos objetos de domínio tem comportamento e as classes da camada de serviço são basicamente uma delegação 1: 1 para os repositórios. Não tenho certeza se isso deve ser considerado um "bom" exemplo de DDD? Ainda estou aprendendo a mim mesmo, mas os exemplos no S # arp Architecture parecem ser um exemplo melhor para quem está aprendendo DDD, pois abrange o estado e o comportamento, o que é um bom design de OOP.
David Anderson

Agora você deve adicionar o excelente exemplo de Vaugnh Vernon, o autor de Implementando o Design Orientado a Domínio (IDDD): github.com/VaughnVernon/IDDD_Samples
Sylvain Lecoy



11

Confira o Projeto Silk . Não apenas demonstra DDD, mas outros padrões de ponta. Este é um excelente recurso para qualquer desenvolvedor da Web. Uma visão geral completa do projeto pode ser encontrada no MSDN .


O código-fonte não está mais disponível :(
Dherik 2/18/18



Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.