Java DDD设计&x2B;使用事件源时的不变性好主意?

Java DDD设计&x2B;使用事件源时的不变性好主意?,java,domain-driven-design,immutability,microservices,event-sourcing,Java,Domain Driven Design,Immutability,Microservices,Event Sourcing,这是我关于DDD和事件源的第三个问题。我正在研究一些与DDD无关的最佳实践。一个好的概念是尽可能使类保持不变 然而,我在尝试将事件源模式与不可变域模型结合起来时发现了一个问题。自 DomainModel-1.0+e1=DomainModel-2.0 [冲洗并重复所有事件] 我担心的是,如果我将我的域模型实现为不可变的,我就不会仅仅为了使我的域模型保持最新而创建很多域对象,这是浪费资源 我想知道,如果我计划在事件源中使用,那么让我的域模型不可变有什么好处呢 使用事件源时的不变性好主意 对 我担心的

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

然而,我在尝试将事件源模式与不可变域模型结合起来时发现了一个问题。自

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

我担心的是,如果我将我的域模型实现为不可变的,我就不会仅仅为了使我的域模型保持最新而创建很多域对象,这是浪费资源

我想知道,如果我计划在事件源中使用,那么让我的域模型不可变有什么好处呢

使用事件源时的不变性好主意

我担心的是,如果我将我的域模型实现为不可变的,我就不会仅仅为了使我的域模型保持最新而创建很多域对象,这是浪费资源

是这样。浪费的资源是否昂贵?你量过尺寸了吗

我想知道,如果我计划在事件源中使用,那么让我的域模型不可变有什么好处呢

最大的问题是并发性——当状态不可变时,在并发操作之间共享状态更容易得到正确的结果。因此,不可变状态更易于共享—您不需要为数据创建新的副本,以防遇到想要更改内容的分支

不可变状态上的操作更容易测试,隔离测试也更容易(如果您眯着眼睛看,这与上面的相同点,在稍微不同的上下文中)