知识卡片

命令影响模型

普通读书笔记卡 · 1767.c

内容

一个命令对应一次业务意图,命令粒度会影响服务方法、聚合构造和状态变化路径。把路线分配并入委托受理,还是作为独立命令,本质是在界定业务意图是否同步完成。

参考来源

- 位置:《复杂软件设计之道》第7章《货物运输系统》"7.4.4 命令与事件设计"及"7.5.3 聚合重构设计"(源文件:_chapter_text/ch07.txt) - 结论依据:原文明确"命令实际是聚合的输入参数,而事件是聚合的输出参数",并以BookCargoCommand→Accepted→ApproveCargoCommand→Approved→GenerateIDCommand链条展示命令驱动状态切换;随后在聚合重构中新增RouteCargoCommand,通过CargoBookingCommandService的assignRouteToCargo()方法把运输作业上下文的行程安排注入为货物聚合的一个新命令,说明是否把路线分配独立成命令,直接决定了聚合模型要不要为此扩充。 - 原始内容:从图7-24看出,命令实际是聚合的输入参数,而事件是聚合的输出参数……图7-42所示模型增加了两个新对象:Itinerary和RouteCargoCommand,主要是为了从CargoBookingCommandService的assignRouteToCargo()方法接收来自运输作业上下文的行程注入,这样,货物从委托接受、审核等步骤,增加了人工输入行程安排的命令。