首页 > 解决方案 > 在使用 CQRS 的情况下从另一个命令调用一个命令

问题描述

我正在使用 CQRS 开发应用程序。我有一些我有点困惑的情况。

我有一个命令 CreateUser。现在我必须创建命令 ImportUsers。我想这些命令的目的很明确。所以有两种选择:

  1. 从 ImportUsers 命令调用 CreateUser 命令。
  2. 在 ImportUsers 命令中进行某种复制/粘贴以从头开始执行所有操作。

什么是最佳做法?先感谢您。

标签: phpcqrs

解决方案


您将逻辑放在错误的位置,这就是导致问题的原因。命令旨在成为域逻辑的协调器。换句话说,他们在域中调用适当的方法来完成他们的工作,而不是他们自己去做。

创建单个用户的逻辑属于每个方法调用的工厂。工厂应该有一个 CreateUser 方法,该方法接受所有数据作为参数,或者如果有超过 5 个左右的参数(我假设有),则接受 DTO。使用工厂创建用户,这两个命令的唯一区别是 ImportUsers 将循环调用工厂的 CreateUser 方法。

检查这个帖子关于命令背后的想法。如果您使用的是 DDD,请阅读Udi Dahan 的帖子,了解所有对象创建应该如何在某个聚合某个地方的方法中。


推荐阅读