如果需要纠正价值该怎么办?

时间:2019-01-30 09:43:43

标签: c# domain-driven-design software-design domain-model rich-domain-model

我知道DDD建议为每个业务操作创建单独的用例。

假设您有一个Player集合。它具有地址值对象。

DDD不允许在UpdatePlayer()层上创建PlayerApplication方法。相反,我们应该做的是创建业务感兴趣的特定用例。因此,我想拥有UpdatePlayer(),而不是RelocatePlayerTo(Address newAddress)

如果在重定位后发现我在newAddress中输入了错误,该怎么办?如何调整地址?例如,我拼错了街道名称,或输入了错误的单元号。

我应该创建一个新的用例AdjustPlayerAddress吗?还有一个新的DomainEvent PlayerAddressHasBeenAdjusted

1 个答案:

答案 0 :(得分:0)

  

如果需要校正值怎么办?

这里有一个重要的考虑因素:数据的权威来源是您的模型还是其他?

例如,我住址的权威来源是真实世界。正确的拼写取决于不受模型控制的所有事物。在那种情况下,我们应该真正考虑模型作为数据副本所持有的内容,这可能是过时的。

在这种情况下,实体的API会趋于贫乏(实际上,您是否打算尝试写出地址可能更改的所有不同原因?并且您确定我作为主题) ,愿意与您分享这些内容吗?)

但是,对于相关数据归模型所有的情况,您很有可能应该创建描述工作中有趣的业务流程的特定流。

有时候,这将有助于更精确地了解正在发生的事情。例如,如果您认为ChangeOfAddress请求本身就是什么呢?然后问题就变成了信息如何在系统的其余部分中移动。

主要思想不是“不要使用CRUD”,而是要使语言与领域的语言相匹配。您的思想拼写的主要来源应该是域专家。