summaryrefslogtreecommitdiff
path: root/source/_posts/从事件风暴看领域驱动设计.md
diff options
context:
space:
mode:
authorsomhairle <[email protected]>2026-04-21 20:40:27 +0800
committerSomhairle H. Marisol <[email protected]>2026-05-24 17:24:57 +0800
commitad8f9f55ea79a4d587aecc69698808da82de3d62 (patch)
treed25c0db712e6f015d850627ff957edea44c64f94 /source/_posts/从事件风暴看领域驱动设计.md
downloadblog-ad8f9f55ea79a4d587aecc69698808da82de3d62.tar.gz
二〇二六年四月二十一日
Diffstat (limited to 'source/_posts/从事件风暴看领域驱动设计.md')
-rw-r--r--source/_posts/从事件风暴看领域驱动设计.md39
1 files changed, 39 insertions, 0 deletions
diff --git a/source/_posts/从事件风暴看领域驱动设计.md b/source/_posts/从事件风暴看领域驱动设计.md
new file mode 100644
index 00000000..41c9dc31
--- /dev/null
+++ b/source/_posts/从事件风暴看领域驱动设计.md
@@ -0,0 +1,39 @@
+---
+title: 从事件风暴看领域驱动设计
+date: 2025-02-11 11:33:08
+tags: Technique
+---
+
+事件风暴(Event Storming)是一种领域驱动设计(DDD)的实践方法,由 Alberto Brandolini 提出,旨在通过团队协作的方式快速理解和建模业务领域。
+
+以下是事件风暴及相关领域驱动设计中的一些核心概念和知识点:
+
+1. 领域(Domain):指的是业务相关知识的集合,可以进一步划分为子域。
+2. 子域(Subdomain):是领域的一部分,可以是核心域、支撑域或通用域。
+3. 核心域(Core Domain):指领域中最核心的部分,通常对应企业的核心业务。
+4. 通用语言(Ubiquitous Language):团队所有成员使用的一种语言,用于确保业务和软件之间的沟通一致性。
+5. 限界上下文(Bounded Context):定义了一组规则和协议,用于明确领域模型的适用范围。
+6. 实体(Entity):具有唯一标识和生命周期的领域对象。
+7. 值对象(Value Object):描述了某种特性或属性的对象,没有概念标识。
+8. 聚合(Aggregate):一组相关对象的集合,由一个聚合根(Aggregate Root)统一管理。
+9. 领域事件(Domain Event):领域中发生的重要事件,可以用于通知其他领域对象或跨限界上下文进行解耦和协作。
+10. 命令(Command):表示要执行的操作,通常与事件一一对应。
+11. 读模型(Read Model):为了优化读取操作而设计的模型,可能与写模型不同。
+12. 决策命令(Decision Command):在事件风暴中,直接导致事件发生的命令。
+13. 战略设计(Strategic Design):高层次的抽象和归类,包括理清上下文和子域的划分。
+14. 战术设计(Tactical Design):对特定上下文下的模型进行详细设计,包括聚合、实体和值对象。
+15. 贫血模型(Anemic Domain Model):领域对象只有属性及其getter/setter方法的纯数据类,业务逻辑通过服务实现。
+16. 充血模型(Rich Domain Model):领域对象包含业务逻辑,每个对象都是活跃的。
+17. 资源库(Repository):用于检索和持久化领域对象的机制。
+18. 服务(Service):在模型中独立的操作,可以是领域服务或应用服务。
+19. 固定规则(Invariant):为设计元素做出的断言,必须一直保持为真。
+
+事件风暴通常包括以下步骤:
+
+- 识别领域事件
+- 确定事件顺序
+- 识别命令和触发器
+- 识别聚合和实体
+- 划分限界上下文
+- 识别领域服务和资源库
+- 通过这些步骤,团队可以共同创建出反映业务领域的领域模型,为软件设计和开发提供指导。