Skip to main content

ddd

Domain-Driven Design, bounded contexts, aggregates, and domain modeling

Ir a la instalación

Datos de origen

Repositorio
NeuralBlitz/Mito
Última actividad en el origen
22 de marzo de 2026 a las 13:29
Idioma detectado de SKILL.md
inglés
Estrellas
0
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
ddd
description
Domain-Driven Design, bounded contexts, aggregates, and domain modeling
license
MIT
compatibility
opencode
metadata
{"audience":"developers","category":"software-development"}
## What I do - Design bounded contexts and their boundaries - Create rich domain models - Implement aggregates and aggregate roots - Design value objects - Define domain events - Apply strategic and tactical DDD ## When to use me When building complex domain logic, modeling business domains, or structuring large applications. ## Strategic Design ### Bounded Contexts - Clear boundaries around domain models - Each context has its own ubiquitous language - Context mapping relationships: - **Customer/Supplier**: Upstream/downstream - **Conformist**: Downstream follows upstream - **Anticorruption Layer**: Translation layer - **Open Host Service**: Published language - **Separate Ways**: No relationship ### Ubiquitous Language - Shared language between developers and domain experts - Embedded in code (class names, methods) - Consistent terminology ### Context Maps - Visual representation of system boundaries - Integration points - Team responsibilities ## Tactical Design ### Entities - Identity that persists over time - Mutable state - Unique identifier ```java class Order { private OrderId id; private Money total; // Entity with unique ID } ``` ### Value Objects - Immutable - No identity - Compares by value ```java class Money { private final BigDecimal amount; private final Currency currency; // Value object - immutable, compared by value } ``` ### Aggregates - Cluster of related objects - Aggregate root controls access - Invariants enforced within boundary - One entity per aggregate typically ```java class OrderAggregate { private OrderId id; private List<OrderLine> lines; // Only aggregate root can modify public void addLine(Product product, int quantity) { // Invariants enforced here } } ``` ### Domain Events - Something significant happened - Immutable - Named in past tense ```java class OrderPlacedEvent { private OrderId orderId; private Money total; private Instant occurredAt; } ``` ### Repositories - Collection-like interface - Persist aggregates - Abstract storage details ### Domain Services - Operations that don't belong to entities - Cross-aggregate operations - Stateless ### Factories - Complex object creation - Hide implementation details ## DDD Patterns - CQRS with DDD - Event sourcing - Specification pattern - Side effects - Policy - Strategy
Ver en GitHub