在使用CQRS的情况下从其他人调用一个命令

时间:2018-06-03 15:23:01

标签: php cqrs

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

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

  1. 从ImportUsers命令调用CreateUser命令。
  2. 在ImportUsers命令中进行一些复制/粘贴以从头开始做所有事情。
  3. 什么是最佳做法?先感谢您。

1 个答案:

答案 0 :(得分:1)

你把你的逻辑放在错误的地方,这就是造成问题的原因。命令旨在成为域逻辑的协调者。换句话说,他们在域中调用适当的方法来完成他们的工作,他们不会自己完成。

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

检查this posting有关命令背后的想法。如果您正在使用DDD,请阅读Udi Dahan's post,了解所有对象创建应该如何在某个聚合某处的方法中。