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.