我正在使用 CQRS 开发应用程序。我有一个案例让我有点困惑。
我有一个命令 CreateUser。现在我必须创建命令 ImportUsers。我想这些命令的目的很明确。所以有两种选择:
- 从 ImportUsers 命令调用 CreateUser 命令。
- 在 ImportUsers 命令中进行一些复制/粘贴,以从头开始执行所有操作。
最佳做法是什么?先感谢您。
最佳答案
您将逻辑放在错误的位置,这就是导致问题的原因。命令旨在成为领域逻辑的协调者。换句话说,他们在领域中调用适当的方法来完成他们的工作,而不是他们自己做。
创建单个用户的逻辑属于每个方法调用的工厂。工厂应该有一个 CreateUser 方法,它接受所有数据作为参数,或者如果有超过 5 个左右的参数,我假设有,则接受 DTO。使用工厂创建用户,这两个命令的唯一区别是 ImportUsers 将循环调用工厂的 CreateUser 方法。
检查 this posting关于命令背后的想法。如果您使用的是 DDD,请阅读 Udi Dahan's post关于所有对象的创建应该如何在某处的某个聚合上的方法中。
关于php - 在使用 CQRS 的情况下从另一个命令调用一个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50667965/