O modelo de domínio anêmico é descrito por Martin Fowler como um antipadrão no design controlado por domínio. Para ter lógica de negócios nos modelos de domínio, geralmente são usados serviços de domínio. Mas a injeção de serviços de domínio em modelos de domínio é considerada prejudicial por Vaughn Vernon (consulte "Implementando o design orientado a domínio", na página 387).
Na minha opinião, essas opiniões são contraditórias, isso é verdade? Como os dois pontos podem ser considerados?
É realmente um modelo de domínio rico com serviços de domínio injetado versus modelo de domínio anêmico e serviços de domínio normal ?
domain-driven-design
dependency-injection
services
Sjoerd222888
fonte
fonte
Respostas:
Um modelo anêmico é simplesmente um contêiner de dados. Não contém comportamento. (Isso pode realmente ser considerado uma coisa boa no paradigma funcional.) O oposto de um modelo anêmico não é um modelo injetado cheio de serviços de domínio. Você está descrevendo dois extremos - ambos são ruins.
Se você tem um modelo anêmico, não está adotando totalmente o que o OOP oferece. Se você começar a injetar serviços nesses modelos, provavelmente estará injetando preocupações que não pertencem a ele. Ou isso ou seu modelo é mais anêmico do que você pensa. Por que mais você precisaria do serviço, além de fornecer algo que é necessário, mas está faltando? (Falta pode significar anêmica).
Evitar os dois "avanços" leva a um design mais forte. Você tem algo em um serviço que um modelo precisa? Talvez deva ser movido para o modelo. Caso contrário, talvez você deva reconsiderar suas preocupações. O comportamento de um modelo deve funcionar dentro do modelo. Deveria se preocupar principalmente (se não apenas) com os membros. Mas lembre-se, ainda haverá coisas que funcionam no modelo ou com ele . Por exemplo, os modelos não devem abrir conexões TCP ou ouvir eventos da interface do usuário, mesmo que estejam envolvidos de alguma forma. Isso é responsabilidade de outra pessoa e que alguém não pertence dentro do modelo.
fonte
Não é contraditório. Ambos os proponentes gostariam que você colocasse seu código real no próprio objeto de domínio.
ie
vs ADM
vs serviços injetados
Francamente, embora cada abordagem tenha vantagens e desvantagens. O que você escolhe é em grande parte uma questão de preferência pessoal
fonte