来源信息
- 仓库
- NeuralBlitz/Mito
- 最近来源活动
- 2026年3月22日 13:29
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 0
- 分支
- 0
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- 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
在 GitHub 查看