Domain-Driven Design: Agregados e Consistência
Gabarito: letra D. Após a modelagem dos conceitos de domínio no Domain-Driven Design (DDD), o arquiteto deve especificar Agregados (Aggregates) para garantir a consistência das mudanças em objetos em um modelo com associações complexas. Esse é o passo natural após identificar Entidades e Objetos de Valor, agrupando-os em clusters com uma raiz que controla o acesso e as invariantes. As demais alternativas tratam de padrões que, embora parte do DDD, não são a atividade imediata de modelagem.
Alternativa A — ❌ Incorreta
Organizar um Repositório (Repository) é uma preocupação de infraestrutura e persistência, não a ação imediata após modelar o domínio. Repositórios são usados para recuperar objetos do domínio, mas vêm depois da definição dos agregados.
Alternativa B — ❌ Incorreta
Definir o modelo de domínio acoplado às necessidades de armazenamento vai contra um dos princípios fundamentais do DDD: o modelo de domínio deve ser independente da infraestrutura (persistência). O correto é manter o modelo puro, sem acoplamento com banco de dados.
Alternativa C — ❌ Incorreta
Uma Fábrica (Factory) é útil para encapsular lógica complexa de criação de objetos, mas não é a principal atividade pós-modelagem. A consistência em associações complexas é tratada por Agregados, não por Factories.
Alternativa D — ✅ Correta ⟵ GABARITO
Especificar Agregados (Aggregates) é o passo correto. Segundo o DDD, um Agregado é um cluster de objetos de domínio (Entidades e Objetos de Valor) que podem ser tratados como uma única unidade. A raiz do agregado (Aggregate Root) é a única porta de entrada para modificações, garantindo a consistência e as invariantes do negócio.
Alternativa E — ❌ Incorreta
Serviços (Services) de domínio são usados para operações que não se encaixam naturalmente em Entidades ou Objetos de Valor, mas não são a primeira ação após a modelagem. A definição de Agregados precede a de Serviços para assegurar que as operações respeitem os limites de consistência.
Gabarito: letra D