O documento discute os princípios do Domain-Driven Design (DDD), abordando como entender o domínio de um software, desenhar um modelo efetivo e implementar uma arquitetura orientada a domínio. O DDD foca em regras de negócio complexas, baixo acoplamento e independência de tecnologia através de boas práticas como modelagem do domínio, linguagem ubíqua, entidades, objetos de valor, agregados, serviços, repositórios e fábricas.
5. O que é DDD? “ É uma maneira de pensar e um conjunto de prioridades, voltado para a aceleração de projetos de softwares com domínios complicados ” Eric Evans.
6. O que o DDD apresenta? Boas práticas Padrões Experiência
7. Qual o foco do DDD? Regras de negócio complexos Isolamento entre domínios Reutilização Domínio Baixo acoplamento Independente de tecnologia
8. Padrões do DDD Contexto Resumo do problema Por esta Razão Discussão da solução Discussão do problema Conseqüências, Implementações e exemplo Resumo do problema Contexto resultante
15. Ligando o modelo e a implementação Consulta Paciente * * Protótipo rudimentar
16. Cultivando uma linguagem baseada no modelo Consulta A Agenda() Paciente Consulta B Agenda() Agenda() Consulta C Frases consistentes com a estrutura do modelo e ser entendido sem ambigüidade e sem tradução
17. Desenvolvendo um modelo rico em conhecimento Consulta Agendamento Secretária Paciente Atendido Médico Verifica Disponibilidade Agenda Captar vários tipos de conhecimento
18. Destilando o modelo Agenda Médica Secretária Verifica Paciente Atendido Agenda a consulta Médico Consulta Realiza Novo modelo que distingue o conceito essencial
28. Objeto de valor não tem identidade para o negócio São imutaveis Descrevem coisas, tipos... Ciclo de vida rápido Exemplo: cores, especialidade, tipo de dados.
33. Fábricas Quando a criação de um objeto, ou AGREGADO inteiro, se torna complicada ou revela uma grande parte da estrutura interna, as FÁBRICAS fornecem o encapsulamento
34. Interação básica com uma fábrica A FÁBRICA faz o objeto que satisfaz o cliente e as regras internas O cliente especifica o que quer Cliente Fábrica Produto novos(parâmetros) criar produto
35. Serviços Não tem estado próprio Fica isolado do modelo Definido como o que ele pode fazer por um “cliente” “Verbo em vez de substantivo” Fala a linguagem ubíqua
36. Módulos ou Pacotes Os módulos existentes na camada de domínio devem surgir como uma parte significativa do modelo. Modelos = Histórias Módulos = Capítulos Módulos = Capítulos Módulos = Capítulos Módulos = Capítulos Módulos = Capítulos Módulos = Capítulos
38. Linguagem Ubíqua Design Dirigido por Modelos Expressar o modelo Nomes entram em Isolar o modelo Arquitetura em camadas Módulos Serviços Entidades Objeto de Valor Integridade Encapsula Encapsular Repositórios Fábricas Acessar Agregados