Domain driven design 每个州一个命令,或者一个命令来管理所有州

Domain driven design 每个州一个命令,或者一个命令来管理所有州,domain-driven-design,cqrs,Domain Driven Design,Cqrs,我正在努力分析我正在处理的一个问题。我处理的是一个清洁应用程序,其中的清洁计划,然后由一些企业完成,最后由房屋所有者控制 当企业完成了自己的部分后,它必须向应用程序发送命令,告知: 这项工作是从开始日期到结束日期完成的 这项工作没有完成,完全是我们的错 工作未完成,但这是所有者的错误 每一个都可能使用不同的信息。所以我考虑使用3个不同的命令来建模,而不是只使用一个命令并添加一个状态 但还有一个层次的复杂性,因为企业可能会执行三种主要的清洁,对于每种清洁,您可能会在这些命令中添加不同的内容,例如:

我正在努力分析我正在处理的一个问题。我处理的是一个清洁应用程序,其中的清洁计划,然后由一些企业完成,最后由房屋所有者控制

当企业完成了自己的部分后,它必须向应用程序发送命令,告知:

这项工作是从开始日期到结束日期完成的 这项工作没有完成,完全是我们的错 工作未完成,但这是所有者的错误 每一个都可能使用不同的信息。所以我考虑使用3个不同的命令来建模,而不是只使用一个命令并添加一个状态

但还有一个层次的复杂性,因为企业可能会执行三种主要的清洁,对于每种清洁,您可能会在这些命令中添加不同的内容,例如:要清洁的座椅数量,或面积和描述

就凭这个,我已经有9个案子要处理了。我觉得,将所有这些分离是正确的做法,因为它使未来更具灵活性

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

我告诉你们我们做了什么工作状态、开始日期、结束日期、评论、ReasonId、NbSeat、AreaQuantity、AreaDescription。。。 我很不喜欢把东西放半满的想法,因为它覆盖的东西太多了


感谢您的阅读和思考,

您为解耦方法提供了一个很好的案例-关注点分离是一个很好的使用原则

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

如果将每个状态更改建模为一个不同的对象,那么您就有了一个事件日志,如果需要的话


拥有一个至少有8个参数的方法是一种代码味道——它告诉我该方法做得太多,最终会变得非常复杂,难以维护。

您为解耦方法提供了一个很好的案例——关注点分离是一个很好的使用原则

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

如果将每个状态更改建模为一个不同的对象,那么您就有了一个事件日志,如果需要的话


拥有一个至少有8个参数的方法是一种代码味道——它告诉我这个方法做得太多,最终会变得非常复杂,难以维护。

非常感谢。非常感谢您的回答。非常感谢。非常感谢你的回答。