DDD CQRS和Event Sourcing的案例:足球比赛

时间:2024-12-10 15:33:38

在12月11日新的有关DDD CQRS和Event Sourcing演讲:改变心态- 以更加面向对象视角看待业务领域建模中,作者以足球比赛football Match为案例说明传统编程方法和CQRS的区别。

CQRS作为DDD的最佳实践已经得到广泛承认和普及,下面摘取该文章的PPT部分图片简单讲解一下,如何使用CQRS和Event Sourcing实现DDD系统。

首先,领域专家对需求进行定义:

1. 举办一个比赛,有两个队参加

2. 比赛在某个时间开始,只能开始一次。

3. 比赛结束后,统计积分

作为用户,希望看到:

1. 参加比赛的队伍名称

2. 比赛开始时间

3. 比赛结束时间

4. 比赛结束后的分数。

好了,搜集到这些需求以后,我们下一步该怎么办呢?

1. 如何确定建模的第一步?

2. 它是如何和关系数据库有关?

3. 建模时如何考虑到用户的操作?获得他们想要看到的数据?

4. 当建模时你更关心什么?

传统方式从上面需求中,根据名词或动词法则,得到下面类:

Match比赛

Team队伍

Score分数

MatchService

类的代码如下图所示,并且有Hibernate等ORM的元注解:

待续.