具有常见操作的 CQRS 命令 - 重复代码

CQRS Commands with common operations - duplicated code

假设我们有几个共享通用逻辑的命令。例如,我有 Document 有几个状态。我们在某些状态下可以进行变异操作,但某些逻辑会根据其状态而有所不同。对超过 3 个状态使用 If 语句制作一个 Command 是令人困惑的。最好为每个操作制作单独的命令,但是如何处理通用逻辑?

我们必须从数据库中获取数据、验证、生成一些辅助文档、写入审计 table 和其他内容。所以它看起来应该是常见的地方,使 Helper class 变得毫无意义是最糟糕的选择。我假设此操作可以/不需要交易。

我已阅读 http://scrapbook.qujck.com/holistic-abstractions-take-2/ and 。我正在寻找其他选择。

@Redgood,如果我没记错的话,你描述的一些东西属于Domain。

确保您的 business/domain "logic" 没有溢出域。我确实使用 ICommand 接口来标记我的命令,我确实在其中有一些逻辑,但仅用于数据类型验证或其他类型的完整性检查。

坚持下去。从命令的角度来看,您只关心命令中包含的数据是否良好。而已。因此,请确保您的命令中的所有方法都只是为了加强完整性。