Eric Evans书 - 货运示例

时间:2014-09-22 09:43:20

标签: domain-driven-design

我正在研究构成DDD基础的书,我在第7章中对卡车运输的例子有点了解。

更具体地说,我有以下问题; Wat是"交付历史&#34 ;?的真正目的根据我的理解,它只是处理事件的集合。但如果是这种情况,为什么它有自己的实体对象?特别是因为完成时间是处理事件的一部分,我无法理解交付历史中的附加价值......

非常感谢任何来自聪明人的帮助。

汤姆

1 个答案:

答案 0 :(得分:3)

投放历史记录的使用是提供一种日志。就像您在线跟踪包裹一样,您可以查看交付历史中的最后一个条目,这是交付货物的最后一个事件。

在现实世界中,公司可以给运输公司打电话并说“我的货物在哪里?它应该在上周二交付!”,运营商可以使用该软件查找货物并从交货历史运营商可以通过查看最后一个条目,货物在运输途中延误等发现

Evans还声明,当投放历史记录投放规范的目标相匹配时,可以认为投放已完成。这些信息非常重要,因此需要围绕它提供业务逻辑,以确保信息正确,有效,最重要的是需要保持信息。这就是为什么投放历史记录实体

  

交货历史反映了货物实际发生的情况,如   反对描述目标的交付规范。一个   交货历史对象可以计算货物的当前位置   通过分析最后的加载或卸载和目的地   相应的载体运动。成功的交付将以a结束   满足交付目标的交付历史   说明书

      --- Eric Evans,领域驱动设计:解决软件核心的复杂性


修改

在Cargo类图上,看起来好像 Delivery History 类引用了处理事件。在这种情况下,交付历史记录可能存在于:

  • 提供一个放置查询的业务逻辑的好地方 交付历史。

  • 它可能会保留使用的常用术语(可能还有物理伪像) 在货物处理领域的 Ubiquitous Language 中。

  • 投放历史记录也可以访问运营商移动事件,因此它 当 Carrier 到达目的端口等时,知道

  • 交付历史记录特定代码放入处理事件中会违反单一责任原则