SOLID & Design Patterns Interview Question #84
What is an anemic domain model?
DDD Boundaries, Resilience, Caching & Practical ASP.NET Core Design Mid-Level Intermediate
Quick Interview Answer
An anemic domain model contains entities that mainly expose data while business rules are implemented elsewhere in procedural service classes. The entities behave more like data containers than domain objects.
Detailed Explanation
An anemic domain model contains entities that mainly expose data while business rules are implemented elsewhere in procedural service classes. The entities behave more like data containers than domain objects.
This is not automatically wrong for simple CRUD applications. It becomes problematic when a complex domain has important invariants but the model does not protect them, causing business logic to be scattered across services.
Code Example
// Anemic style
order.Status = OrderStatus.Confirmed;
// Richer domain behavior
order.Confirm();
// Confirm() can validate invariants internally.