在讨论中,我得到了以下问题。在银行业务域中,有一个聚合根,帐户,由帐号识别。假设在某个时间点,由于某些原因,银行决定将所有帐户从8位更改为12位,并且该帐户可以使用这两个数字访问一年,之后只会使用新的数字,这应该如何以DDD方式处理,我想知道它是否会创建一个新的有界上下文
答案 0 :(得分:4)
对于一个实体,您总是希望拥有一个技术ID,即Id(UUID)属性,它是不可变的,并且您的应用程序可以控制。自然标识AccountNumber
仅是值对象。基本上,在您的应用程序中出于技术原因仅使用Id,AccountNumber只是聚合的另一个VO /细节。
更改帐号格式不应该创建新的有界上下文,它只是值对象内部的更改。但是由于变化而产生的所有问题都源于实施,而不是来自域建模(除非它是错误的模型:D)。如果您正在使用事件采购和CQRS,相对而言,事情应该足够简单。如果您正在使用恢复状态的ORM,事情会更复杂。
DDD方式意味着你必须了解概念的本质,实际的实现取决于很多事情。