首页 > 解决方案 > 汇总的必填字段过多

问题描述

我有一个名为 Order 的聚合,它有一个很大的列表(超过 20 个),企业已将这些字段标识为必填字段。

如果没有这些必填字段,订单将无法处于有效状态。

在我的域层中,当我创建 Order 聚合时,涉及到一些域逻辑,只需要这 20 个必填字段中的几个(域逻辑只需要大约 5-6 个)。

如果我纯粹遵循 DDD 的原则并将这些强制值视为不变量,我必须创建包含所有字段的 Order 域对象,其中大多数应该只通过非空/空验证。确实感觉可能有更好的方法来处理这种情况。

那么我的方法应该是什么?我是否应该只使用域逻辑所需的 5-6 个字段来创建域对象?从业务角度来看,这是否意味着 Order 聚合处于无效状态?但是,如果使用一组较小的值创建域对象,则要简单得多。

我已与业务部门核实他们是否真的需要所有这些字段,是的,他们非常需要创建包含所有这些必填字段的订单。

标签: domain-driven-design

解决方案


我在这里找到了我的问题的答案:

https://softwareengineering.stackexchange.com/questions/301928/aggregate-root-with-many-fields

从上面的链接:

可以这样想:当您从电子商务网站订购商品时,您可能会分几个不同的步骤填写您的订单,通过多个屏幕输入产品、运输信息、付款信息等......订单保存在步骤之间,即使缺少完成订单所需的信息! 唯一的区别是,在订单发货之前,它需要该信息。这并不意味着它不能被创建。


推荐阅读