Skip to content

Latest commit

 

History

History
21 lines (11 loc) · 1.5 KB

DDD.md

File metadata and controls

21 lines (11 loc) · 1.5 KB

DDD stands for Domain-Driven Design. It's a software development approach that focuses on understanding the business domain, its needs, and its complexity, and modeling the software according to that understanding.

DDD involves a set of practices and terminologies that help developers design software that accurately represents the business domain. Here are some key concepts in DDD:

  • Ubiquitous Language: A common language between developers and domain experts that is used to describe the system. This language should be used in all discussions and in the code itself.

  • Bounded Context: A specific responsibility within the software system, with explicit boundaries. Different bounded contexts can have different models of the same real-world concepts.

    1. Entities: Objects that have a distinct identity that persists over time and across different representations.

    2. Value Objects: Objects that represent a value and do not have a distinct identity. They are often immutable.

    3. Aggregates: A cluster of domain objects (entities and value objects) that can be treated as a single unit.

    4. Repositories: Mechanisms for storing, retrieving, and querying aggregates.

    5. Domain Events: A record of a significant event within the domain.

    6. Services: Operations that do not naturally belong to an entity or value object.

By focusing on the domain and its complexity, DDD aims to create software that is a faithful representation of the business reality, leading to more maintainable and flexible systems.