Skip to content

Day 10 - 领域事件(Domain Event) ​

📖 今日目标 ​

  1. 理解领域事件(Domain Event)的概念
  2. 掌握领域事件的设计和实现
  3. 学习事件驱动架构的应用

核心概念 ​

什么是领域事件? ​

领域事件(Domain Event) 是表示领域中已发生的事实的事件。它使用过去式命名,表示业务中发生的业务事实。

关键要点 ​

1. 领域事件的组成 ​

java
public class OrderPlacedEvent {
    private final OrderId orderId;
    private final CustomerId customerId;
    private final Money totalAmount;
    private final DateTime occurredAt;
    
    // 元数据
    private final String eventId;
    private final int version;
}

2. 领域事件的使用场景 ​

  • 解耦限界上下文
  • 维护一致性
  • 触发下游业务流程

3. 事件发布 ​

java
public class Order extends AggregateRoot {
    
    public void place() {
        // 业务逻辑...
        
        // 发布领域事件
        DomainEventPublisher.publish(
            new OrderPlacedEvent(orderId, customerId, totalAmount)
        );
    }
}

面试考点 ​

问题:领域事件和消息队列有什么区别? ​

答案:

  1. 关注点不同:

    • 领域事件:业务事实,描述"发生了什么"
    • 消息队列:技术实现,描述"如何传递"
  2. 用途不同:

    • 领域事件:触发业务逻辑、保持一致性
    • 消息队列:异步通信、系统解耦
  3. 关系:

    • 领域事件可以通过消息队列传递
    • 但领域事件首先是业务概念

实践思考 ​

🎯 思考题:

在电商系统中,列出至少5个领域事件,并说明触发场景。


📅 学习进度 ​

Day主题状态
01-09战略设计 + 战术基础✅
10领域事件(Domain Event)✅
11仓储模式(Repository)⬜
.........
30复习与总结⬜

本文为DDD 30天学习计划第10天内容 ​

📚 导航 ​

| ← Day 09 - 上一章 | Day 11 - 下一章 →

最后更新: