DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集
jeri 2024-4-17 12:59
潘老师,在整理领域模型时,这个申请是有多次的,直到申请成功,多重性是* ,但分析模型时,需求只要求记录最后一次申请结果,那多重性是不是修改成1,入驻申请,原来是时刻时段,变成了绿色(即驳回申请时,修改对象的值,而不是插入一条新的记录)。这种设计是否好。
UMLChina潘加宇
多重性确实为1,但不是“修改为1”,而是删除原来1对多的“发生过的申请”关联,新增为1对1的“最新申请”关联。
这里要注意的,领域事实并没有发生变化,“最新申请”之前也是存在的,一个会员关联到多个申请,但只关联到一个最新申请,如下图:
目标系统选择只维护其中一部分信息时,则只剩右侧的“最新申请”关联,但这并不是领域的事实发生了变化。
问题所给类图的左侧部分,由于入驻申请有日期属性,“最新申请”可以由“入驻申请”的“日期”比较出来,因此可以没有“最新申请”的关联。
当目标系统决定只记录最新申请时,相当于把原有关联删掉,新增一个最新申请的关联,并不是把原有关联的多重性改掉。
我类比一下看能不能帮助理解:
爽文中,张三穿越回古代,和许多个女人成为X伴侣,但只有一个女人是正妻。
如果目标系统记录张三的所有女人,可以用上图左边;如果只需要记正妻,可以用上图右边。
但是,领域的事实并没有变化。并不是说,因为系统只记正妻,所以现实中张三只允许和一个女人成为X伴侣。
为什么要强调这一点?因为这里的错误认识经常成为领域驱动设计伪创新的土壤。
有的人误以为,领域规律会随着自己所开发系统关注的范围大小而变化。
既然领域规律可以随便玩,那就太好了,开发团队不用费力去学习研究领域知识了,闭门造车搞一下限界上下文+通用语言就行,怎么爽怎么来!