Pergunta

Ser confundido novamente depois de ler sobre este anti-padrão e as muitas preocupações sobre o assunto aqui no SO.

Se eu tiver um modelo de domínio e capturar os dados que devem ser mantidas em um objeto de transferência de dados, isso faz o meu modelo de domínio um invólucro em torno dos dados? Nesse caso, eu estaria usando um modelo de domínio anêmico. Mas se eu adicionar lógica de domínio suficiente sobre esse invólucro, em que ponto é que se torna um modelo de domínio real, então?

Tenho a impressão de que capturar o que deve ser mantido em um modelo de domínio viola boas práticas e cria o modelo de domínio anti-padrão anêmica. No entanto, se você usar um banco de dados relacional não há nenhuma maneira de evitar a única de fora a parte que faz com que o estado do objeto e salvá-lo.

Desde que eu estou muito confuso sobre os conceitos que eu não estou certo de que o que eu escrevo faz sentido. Sinta-se livre para pedir esclarecimentos.

Foi útil?

Solução

Ela se torna uma 'real' modelo de domínio quando ele contém todas (ou mais) do comportamento que compõe o domínio do negócio (note que eu estou enfatizando lógica de negócios , não UI ou outras preocupações ortogonais).

Se você estiver usando o Ubiquitous Língua , e recebendo feedback constante do seu especialistas do domínio , você saberá que você está no caminho certo (peritos deve inclinar quando vêem o seu modelo de domínio). Se você não está fazendo essas coisas, você não está fazendo DDD ( Eric Evans falar sobre isso ).

para o ponto de DTOs: não ignorá-los. A partir de uma perspectiva de implementação, você vai precisar deles para transportar dados entre camadas / camadas. Como você combinar DTOs e verdadeiro objetos de domínio realmente depende da tecnologia que você está usando.

Como mencionado em uma resposta mais cedo, talvez o seu foco em dados e persistência está distraindo-o de true modelagem de domínio ...

Outras dicas

Dois itens de interesse vêm à minha mente:

  • Transferência Data Objects (DTOs) são diferentes dos objetos de domínio. Eles servem a propósitos diferentes em lugares diferentes em uma arquitetura - não confundi-los. Domínio Objects fornecer uma rica API com alta coesão . DTOs são estruturas dados passiva utilizados na interface externa de um aplicativo - completamente como UI ViewModels, mas destina-se a sistemas automatizados em vez de usuários
  • .
  • Esforce-se depois de selecionar um ORM que permite fazer empregam A ignorância Persistência . Isso significa que você pode definir seu modelo de domínio de forma ilimitada, e simplesmente têm o ORM mapear os objetos para um banco de dados relacional.

Mas se eu adicionar lógica de domínio suficiente sobre esse invólucro, em que ponto é que se torna um modelo de domínio real, então?

Chegando no modelo de domínio por meio de adição de material de uma forma aleatória é possível, mas o projeto certamente não orientada domínio. (Eu sei que isso não é realmente útil. Eu tendo a pensar muito centrada em dados mim mesmo, e em alguns casos é preciso um esforço real para puxar a si mesmo a partir deste ponto de vista.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top