我正在学习构成 DDD 基础的书,并且在理解第 7 章中有关 cargo 的示例方面有点卡住了。
更具体地说,我有以下问题; Wat是“Delivery History”的真正目的?在我的理解中,它只是处理事件的集合。但如果是这样,为什么它有自己的实体对象呢?特别是因为完成时间是处理事件的一部分,我无法理解交付历史中的附加值......
非常感谢比我更聪明的人的任何帮助。
汤姆
最佳答案
的使用交货历史是提供一种类型的日志。就像您在线跟踪包裹时一样,您可以查看 中的最后一个条目。交货历史这是在运送 cargo 的故事中发生的最后一件事。
在现实世界中,公司可能会调用运输公司并说“我的 cargo 在哪里?应该是上周二交付的!”,运算符(operator)可以使用该软件找到 cargo 并从交货历史运算符(operator)可以通过查看最后一个条目来发现 cargo 在运输途中延误等。
Evans 还表示,当 时,可以认为交付已完成。交货历史匹配目标交货规范 .此信息很重要,因此它需要围绕它有业务逻辑,以确保信息正确、有效,最重要的是,它需要被持久化。这就是为什么交货历史是一个实体。
Delivery History reflects what has actually happened to a Cargo, as opposed to the Delivery Specification, which describes goals. A Delivery History object can compute the current Location of the Cargo by analyzing the last load or unload and the destination of the corresponding Carrier Movement. A successful delivery would end with a Delivery History that satisfied the goals of the Delivery Specification.
--- Eric Evans, Domain-driven Design: Tackling Complexity in the Heart of Software
编辑
在 Cargo 类图上,看起来 Delivery History 类确实引用了处理事件。在这种情况下,交付历史记录可能存在于:
交货历史。
在 cargo 装卸领域的通用语言中。
知道承运人何时到达其目的港等。
关于domain-driven-design - 埃里克·埃文斯(Eric Evans)的书 - cargo 运输示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25971032/