假设我们有几个共享共同逻辑的命令。例如,我有一个具有多个状态的文档。我们在某些状态下可以进行变异操作,但某些逻辑根据其状态而有所不同。使用 If
语句为 3 个以上的状态创建一个 Command
会令人困惑。最好为每个操作制定单独的命令,但是如何处理通用逻辑呢?
我们必须从数据库中获取数据、验证、生成一些辅助文档、写入审计表和其他内容。所以看起来它应该是常见的地方,而制作无意义的 Helper
类是最糟糕的选择。我假设此操作可以/不需要事务。
我已阅读http://scrapbook.qujck.com/holistic-abstractions-take-2/和 CQRS code duplication in commands 。我正在寻找其他选择。
最佳答案
@Redgood,如果我没记错的话,你描述的一些东西属于域。
确保您的业务/域“逻辑”不会溢出到域之外。我确实使用 ICommand 接口(interface)来标记我的命令,并且其中确实有一些逻辑,但仅用于数据类型验证或其他类型的完整性检查。
就这样吧。从命令的角度来看,您所关心的只是命令中包含的数据是否良好。就是这样。因此,请确保命令中的所有方法都只是为了强制执行完整性。
关于具有常见操作的 CQRS 命令 - 重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41480343/