domain-driven-design - 汇总的必填字段过多
问题描述
我有一个名为 Order 的聚合,它有一个很大的列表(超过 20 个),企业已将这些字段标识为必填字段。
如果没有这些必填字段,订单将无法处于有效状态。
在我的域层中,当我创建 Order 聚合时,涉及到一些域逻辑,只需要这 20 个必填字段中的几个(域逻辑只需要大约 5-6 个)。
如果我纯粹遵循 DDD 的原则并将这些强制值视为不变量,我必须创建包含所有字段的 Order 域对象,其中大多数应该只通过非空/空验证。确实感觉可能有更好的方法来处理这种情况。
那么我的方法应该是什么?我是否应该只使用域逻辑所需的 5-6 个字段来创建域对象?从业务角度来看,这是否意味着 Order 聚合处于无效状态?但是,如果使用一组较小的值创建域对象,则要简单得多。
我已与业务部门核实他们是否真的需要所有这些字段,是的,他们非常需要创建包含所有这些必填字段的订单。
解决方案
我在这里找到了我的问题的答案:
https://softwareengineering.stackexchange.com/questions/301928/aggregate-root-with-many-fields
从上面的链接:
可以这样想:当您从电子商务网站订购商品时,您可能会分几个不同的步骤填写您的订单,通过多个屏幕输入产品、运输信息、付款信息等......订单保存在步骤之间,即使缺少完成订单所需的信息! 唯一的区别是,在订单发货之前,它需要该信息。这并不意味着它不能被创建。
推荐阅读
- mysql - 如果count = 0 mysql,则添加表列
- unity3d - 如何使用 Vuforia 设备跟踪无标记和统一将 GameObject 锚定在环境中?
- reactjs - React - 在下拉菜单中开发手风琴时避免关闭下拉菜单
- cisco - 如何降级 Cisco Switch C3850 24T S 的固件
- xpath - 关于命名空间的不同行为 Xpath 和 XQuery
- javascript - 根据视口向部分添加类?
- regex - 301 重定向正则表达式模式
- angular - Angular - 仅在第一次加载时触发的代码
- python-3.x - 如果我的订单不如列表多,如何洗牌
- python - Web2py 布局配置设置