DDD(Domain Driven Design)
Introdução
●
É um conjunto de boas práticas da OO
●
●
●
●
Alinhamento do código com o negócio
Tem foco no domínio e na lógica do domínio Padrões não ligados apenas a programação
Relacionamento entre times que desenvolvem um sistema complexo
Histórico
●
●
Vem do título do livro escrito por Eric
Evans, dono da DomainLanguage, uma empresa especializada em treinamento e consultoria para desenvolvimento de software.
“Domain-Driven Design: Tackling
Complexity in the Heart of Software”
Como funciona?
Conceitos relacionados
●
●
Linguagem Ubíqua:
Linguagem com termos bem definidos que fazem parte do domínio da aplicação e que são usados por todas as pessoas que fazem parte do desenvolvimento do software. Conceitos relacionados
●
●
●
MDD(Model Driven Design)
A Linguagem Ubíqua leva ao
MDD
Divisão do sistema em camadas
Conceitos relacionados
●
Interface de usuário
●
Aplicação
●
Domínio
●
Infra-estrutura
DDD
●
●
●
Padrões(“blocos de construção” que serão utilizados para representar o nosso modelo abstrato) Entidades: classes de objetos que necessitam de uma identidade.
Objetos de valores: carregam valores e não possuem identidade, strings, números ou cores. DDD
●
Agregados, uma classe ou encapsula objetos de valor ou entidades.
●
●
Raiz do agregado
Fábricas: classes responsáveis pelo processo de criação dos agregados ou objetos de valores.
DDD
●
●
Serviços: classes que contenham a lógica do negócio mas que não pertencem a nenhuma Entidade ou Objetos de Valores.
Repositórios, administra o ciclo de vida de outros objetos
DDD
●
Módulos: Agrupa classes por um determinado conceito de domínio
●
Pacotes em java
●
Namespaces em .NET
●
Módulo em Ruby
Refatorando em DDD
●
O processo de aperfeiçoamento é contínuo
●
Interface de intenção revelada
●
Funções sem