Como o design orientado ao domínio pode ser combinado com a programação orientada para aspectos?
-
20-09-2019 - |
Pergunta
Estou fazendo pesquisas e um ponto que quero cobrir é "Qual é a relação entre design orientado ao domínio e programação orientada para aspectos?"
Sei que um princípio principal no DDD é a separação de preocupações e eu entendo isso. O que não tenho muita certeza é que os aspectos da AOP agem como "subdomínios" em nosso domínio em DDD.
São esses dois conceitos, basicamente a mesma coisa. Quero dizer, se eu desenvolver um aplicativo seguindo AOP e DDD, no final do dia será verdade que "um sub domínio" == "um aspecto".
Também apreciarei quaisquer outras opiniões qual é o comum entre AOP e DDD.
Solução
Um dos objetivos do DDD é ter uma representação pura da sua lógica de negócios que não é influenciada por sua infraestrutura. Uma ferramenta muito poderosa para realizar isso é AOP. Uso principalmente a AOP para subdomínios de infraestrutura, como log, cache, validação e manuseio de exceções. Normalmente, não uso a AOP para a lógica de negócios real, no entanto, a validação é uma espécie de infraestrutura e lógica de negócios.
Nos casos em que a AOP sangra na lógica de negócios, uso atributos/anotações para chamar o comportamento. Para outras preocupações, usarei a política/configuração para aplicar aspectos.