# Tactical Design: Implementation Details
> [!Note]
> Tactical Design provides the concrete building blocks—[[Entities]], [[Value Objects]], [[Aggregate]]'s, [[Repository]]'s, [[Domain Service]]'s, [[Domain Events]], and [[Factory]]'s—to implement a robust domain model with clear boundaries, transactional consistency, and encapsulation.
Tactical Design begins with **[[Entities]]** and **[[Value Objects]]**, the fundamental types in a domain model. **[[Entities]]** represent objects with a distinct identity that persists over time, whereas **[[Value Objects]]** are defined solely by their attributes and carry no independent identity. This distinction ensures that identity-critical data is managed consistently, while simple descriptive data remains immutable and side-effect-free.
Building on these, **[[Aggregate]]'s** group related [[Entities]] and value objects into a single consistency boundary. An [[Aggregate]] enforces its own invariants and transactional rules, guaranteeing that operations within its boundary leave the model in a valid state. To support persistence and retrieval, **[[Repository]]'s** offer abstracted data-access mechanisms for each [[Aggregate]], hiding infrastructure concerns behind a simple interface.
Not all domain operations fit neatly within an aggregate. [[Domain Service]] encapsulate stateless operations or business logic that involve multiple aggregates or do not belong to a single entity. Paired with this, [[Domain Events]] record significant state changes or occurrences, enabling other parts of the system to react or integrate without tight coupling to the originating model.
Finally, **[[Factory]]** provide controlled means of creating complex aggregate roots or entities, preserving the integrity and encapsulation of construction logic. By centralizing creation procedures, factories prevent inconsistent initialization and uphold invariants from the moment an object enters the system.
---
## References
- Vernon, V. (2016). _Domain-driven design distilled_. Addison-Wesley Professional.
- Vernon, V. (2013). _Implementing domain-driven design_. Addison-Wesley Professional.
- Khononov, V. (2021). _Learning domain-driven design: Aligning software architecture and business strategy_. O’Reilly Media.
- Alammar, J., & Grootendorst, M. (2024). _Hands-on large language models: Language understanding and generation_. O’Reilly Media.
- Evans, E. (2003). _Domain-driven design: Tackling complexity in the heart of software_. Addison-Wesley Professional.
- Millett, S., & Tune, N. (2015). _Patterns, principles, and practices of domain-driven design._ Wrox.