- 命令(Commands)
- 事件(Events)
- DTOs
我的动机:
命令(Commands)。 假设用户提交一个包含地址字段的表单。我们有一个地址值对象来表示这个概念。在客户端构建命令时,我们无论如何都要验证用户输入,当其格式正确时,我们可以立即创建地址对象并用它初始化命令。我认为不需要将地址对象的创建委托给命令处理程序。
领域事件(Domain Events)。 领域模型已经运作在值对象的基础上了,因此通过发布带有值对象而不是转换为原始类型的事件,我们可以避免一些映射代码。我很确定在这种情况下使用值对象是可以的。
DTOs。 如果我们的查询端DTOs可以包含值对象,这将允许更高的灵活性。例如,如果我们有货币对象,则可以选择在欧元或美元中显示它,无需更改读取模型。