DDD设计+使用事件采购时的不变性好主意?

时间:2018-04-23 22:06:57

标签: java domain-driven-design immutability microservices event-sourcing

这是我关于DDD和事件采购的第三个问题。我正在研究一些与DDD无关的最佳实践,一个好的概念是尽可能让你的类不可变。

然而,我发现我的头脑中有一个问题试图嫁给事件采购模式+不可变的域模型。由于

DomainModel-1.0 + e1 = DomainModel-2.0 [冲洗并重复所有活动]

我担心的是,如果我将我的域模型实现为immutable,那么我不会创建很多域对象,只是因为我的域模型是最新的,这是浪费的资源。

如果我计划使用事件源,我想知道如果有任何好处使我的域模型不可变。

1 个答案:

答案 0 :(得分:1)

  

使用事件采购好主意时的不变性?

  

我担心的是,如果我将我的域模型实现为immutable,那么我不会创建很多域对象,只是因为我的域模型是最新的,这是浪费的资源。

就是这样。那些浪费的资源是否昂贵?你有没有测量过?

  

如果我计划使用事件源,我想知道如果有任何好处使我的域模型不可变。

最大的是并发 - 当状态不可变时,并发操作之间的共享状态更容易正确。因此,不可变状态更容易分享 - 您不需要制作新的数据副本,以防您遇到想要更改内容的分支。

对不可变状态的操作更容易测试,并且更容易单独测试(如果你眯着眼睛,这与上面的内容完全相同,在稍微不同的上下文中)。