architecture - DDD,如何更改 ValueObject?

标签 architecture domain-driven-design software-design value-objects

该问题涉及您必须更新/删除值对象的情况。

考虑这种情况。

您有一个订单,您有产品,并且产品有 ProductItems。其中 ProductItem 是 ValueObject。如果您必须更新产品中的产品项目列表(假设更新数量),您会怎么做?您将如何确定需要更新的确切 ProductItem?

这是从 OrderingContext 的角度来看,应该有一个支持上下文,其中有 ProductItem 库存和 ProductItem 定价 (InventoryContext),其中 ProductItem 不仅仅是一个 ValueObject,但由于我们位于 OrderingContext 下,如何如果您无法识别 ProductItem,您会更新它吗?

最佳答案

您可以通过所需的任何方式识别列表中的值对象,对此没有规则

例如,在这种情况下,识别它的一种方法是使用它在列表中的数字索引。如果您需要更稳定的东西(即在项目重新排序的情况下也适用),您可以使用支持此功能的语言使用 GUID 而不是数字索引。例如,PHP 允许您使用 string 进行数组访问,并且 GUID 可以在用于数组查找。

关于值对象需要记住的重要规则:它们应该是不可变的,也就是说,如果您需要更新一个实例,那么您可以将其替换为另一个实例。

关于architecture - DDD,如何更改 ValueObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53391249/

相关文章:

domain-driven-design - DDD - 第三方 API 接口(interface)应该在哪里?

swift - 在 Swift 中编写 Kotlin 的 by-clause(又名类委托(delegate))的正确方法是什么?

c++ - 为什么 `std::align_val_t`要限制隐式转换?

python - 多平台代码生成

java - 单页应用程序: page reload

java - 游戏开发 - 抽象技能/天赋系统实现

c# - 创建DTO时如何避免冗余的业务逻辑(DB fetching)?

c++ - 我的 C++ 游戏架构

java - Java 的全栈框架

c# - 跨聚合根搜索 child