首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于DDD总量、订单与支付的基本问题

关于DDD总量、订单与支付的基本问题
EN

Software Engineering用户
提问于 2019-06-07 18:52:20
回答 1查看 1.1K关注 0票数 -2

有一条来自https://martinfowler.com/bliki/DDD_Aggregate.html的声明:

聚合将有其组件对象之一是聚合根。来自聚合外部的任何引用都应该只指向聚合根目录。因此,根可以确保聚合作为一个整体的完整性。

我有什么订单,有项目,这些项目可能会支付不同的付款。

应该将支付实体包括在订单集合中,因为否则它实际上应该有一个指向内部订单项目的链接,而不是整个订单?我不太了解这个聚合规则,以及它应该如何在这种情况下应用。

我的问题是:在这种情况下,可能存在哪些集合,是否可以有单独的OrderAggregate,并且可以说是持有支付实体的其他集合?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2019-06-08 09:57:53

在DDD中,约定的Root对象或ARs应该将对您需要在业务逻辑中进行的计算具有重要意义的所有数据组合在一起。

因此,在您的顺序和项目的例子。如果您需要通过将每个项目的权重相加来计算订单的运输成本,那么您应该有Order.Items,它包含订单中的所有项目。

如果任何单个项目发生更改,则总体顺序将发生更改。因此,它们都应该作为一件事情一起处理。

显然,这里有一个危险,因为我可以有一个商业规则。企业价值是其所有客户、订单、物品、价格减去所有员工、年数、月份、工资的总和。

如果您尝试将所有内容放在一个聚合根中,那么它就无法工作。

如果两个程序同时更改相同的AR,则有一个问题。有效的合并需要完成。

如果你不能在记忆中保存整个AR,那么你必须买一台更昂贵的电脑。

您的ARs越大,这些问题就越多。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/393046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档