将域逻辑更新为聚合根的子节点的适当位置在哪里?

时间:2011-01-24 19:03:23

标签: domain-driven-design aggregateroot aggregates

最佳做法是直接更新聚合根的子级,还是仅通过其聚合根更新?例如,这是首选:

Order.UpdateOrderLineQuantity(orderLine, quantity);

Order.OrderLines[0].UpdateQuantity(quantity);

本部门的任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:2)

聚合根是封装相关子对象的对象,因此您应该使用第一种技术。

与调用者不应该关心订单ID是否存储为整数或字节数组的方式相同,他们不应该关心或知道它是否使用OrderLinesHideousLegacyObjects来存储和操作订单的信息。