Domain-Driven Design (DDD)

Model complex business logic with DDD

Posted by Rodrigo Castro on February 22, 2025

Domain-Driven Design (DDD) helps you model complex business problems clearly and maintainably.

🏢 What is DDD?

  • Focuses on the domain (the core business logic).
  • Uses a ubiquitous language: shared terms understood by developers and business experts.
  • Encourages separation of concerns (domain, infrastructure, UI).

🏗️ Key Concepts

  • Entities: Objects with identity (e.g., Order)
  • Value Objects: Objects with value but no identity (e.g., Money)
  • Aggregates: Groups of related entities treated as a unit
  • Repositories: Handle data persistence for aggregates

🧩 Example

1
2
3
4
5
6
public class Order
{
    public Guid Id { get; set; }
    public List<OrderItem> Items { get; set; }
    // Domain logic here
}

💡 Tips

  • Keep domain logic in your domain layer, not in controllers or repositories.
  • Collaborate with business experts when naming and modeling.

Next: Clean Architecture in C#!