每个州的一个命令,或一个命令来统治它们

时间:2012-01-28 17:07:11

标签: domain-driven-design cqrs

我正在努力分析我正在处理的问题。我处理清洁应用程序,在那里安排清洁,然后由一些企业完成,最后由房屋所有者控制。

当企业完成其任务时,它必须向应用程序发送命令,告诉:

  • 工作完成(StartDate,EndDate)
  • 这项工作完全不是我们的错(评论)
  • 工作没有完成,但这是业主的错(ReasonId)

每个都可能使用不同的信息。所以我考虑使用3个不同的命令对其进行建模,而不是仅使用一个并添加状态。

但是复杂程度要高一级,因为企业可能会执行3种主要的清理工作,并且可能会对这些命令添加不同的内容(例如:要清理的座位数,或者区域和描述)。

就这一点而言,我已经处理了9个案例。我觉得将所有这些分离是正确的方法,因为它可以在未来实现更大的灵活性。

但我是否正确地认为这三个是不同的东西,如果它们不仅仅是一个大命令:

  • 我告诉你我们做了什么(StateOfWork,StartDate,EndDate,Comment,ReasonId,NbSeat,AreaQuantity,AreaDescription ......)

我完全不喜欢将物体弄半满的想法,因为它涵盖了太多的东西..

感谢您的阅读和您的想法,

1 个答案:

答案 0 :(得分:5)

您已经为解耦方法提供了一个很好的理由 - 关注点分离是一个很好的使用原则。

如果每个命令具有不同的含义,则应将其建模为不同的对象。

如果您将每个状态更改建模为不同的对象,那么您就可以获得事件日志,如果需要,可以使用event sourcing

拥有一个带有(至少)8个参数的方法是代码气味 - 它告诉我方法做得太多,最终会变得非常复杂并且难以维护。