[答疑]Eric Evans这样画是真不懂还是有特别考虑

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集


albert 2024-5-2 10:14

您觉得Evans这样画是真不懂还是有特别的考虑?

(补注:指的是“《领域驱动设计》里的这个不变式是不是也是错的”中提到的图。)

UMLChina潘加宇

不清楚。

Eric Evans虽然在他的书中提了不变式,但除了书里的例子,我还没有阅读到他在其他地方提供更多的例子。

有意思的是,因为Eric Evans提了不变式,所以DDD圈子里就把不变式当成了新宠,写文章的时候总喜欢提那么一嘴(同理,Eric Evans没提到的内容,圈子是当作不存在的)。

遗憾的是,圈子的特点是“不学有术”和“封闭引用”,所以关于不变式的阐述都是有点搞笑的。

参见《这个不变式是不是多余》中我批评Vaughn Vernon《实现领域驱动设计》书中“不变式”的内容。

**********

如果强行猜测的话,可能一半一半吧。

Eric Evans可能想“创新”一下,表达“聚合圈住的内容”的不变式,所以把式子画在圈子内的空白处,但关于“聚合”以及“聚合根”存在的冗余和伪创新,我在《DDD话语“聚合”中的伪创新》已经阐述了。

但还有一个不好回避的细节问题:

如果用建模工具画出书中这个图上的花括号内容{sum of......},我们会怎么画?下图直接摘了英文版原书的图,以免引入中译本重描或重画带来的误会。

图片

从我使用建模工具的经验来看,要得到上图的效果,应该是这样做的:

选中(或双击)Purchase Order和Purchase Order Line Item之间的关联线,在关联的属性框的某处填上{sum of......},当然,顺便把Purchase Order一侧设为aggregate,Purchase Order Line Item一侧的多重性设为*。

至于“关联的属性框的某处”是哪一处,就看{sum of......}的位置。

Eric Evans的图上,{sum of......}的位置在关联线的中间位置,那么应该是填在关联的名称处。

而像《这个不变式是不是多余》中提到的下面这张图,{Post必须......}的位置紧挨着Post,应该是填在关联的Post一侧的角色处。

图片

这个细节说明,作者如果是用建模工具画的图(看图的样子,可能性较大),画图的时候确实是知道{sum of......}或{Post必须......}这样的内容是描述这根关联线,而不是描述关联两端的某个类。

也就是说,作者觉得“不变式描述关联”这个事情很正常。

**********

当然,此处作者可以这样辩解:

其实道理作者是懂的,只不过画图的时候是用纯绘图工具画的,不变式那个框框不小心摆的地方不对,造成误解了,不好意思!

你看,圈子喜欢用“敏捷”而“自由”的画图工具,不是没有理由的——不用考虑语法以及语法背后的道理,怎么画都对!

上面这两张图还可以这么辩解一下,而《你的医书是假的!》中批评的图就没法辩解了,因为已经明晃晃地把“不变式”绑定到关联线上了。

图片

  • 62
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值