【问题标题】:DDD: DTOs and Parameter ObjectsDDD:DTO 和参数对象
【发布时间】:2021-03-24 08:07:35
【问题描述】:

我正在使用 DDD/CQRS 对我的域进行建模,但我遇到了命名问题。

假设我有一个类树结构的类别聚合,我想更新类别树:

class CategoryItemEntity {
    Long guid;
    String title;
    List<CategoryItem> children;
    Datetime createdAt;
    Datetime updatedAt;
}

class CategoryItemParameterObject {
    Long guid;
    String title;
    List<CategoryItem> children;
}

class CategoryAggregate {
     Long guid;
     List<CategoryItem> items;

     void updateTree(List<CategoryItemParameterObject> items) {
          // ...
     }
}

我的问题是我应该怎么称呼CategoryItemParameterObject?它是 DTO 还是其他?我的阅读端也有一个CategoryItemDTO。如果我称它为CategoryItemDTO 会不会让人感到困惑?

可以直接向聚合发送命令吗?

【问题讨论】:

  • 我认为这是一个口味问题,但我个人根据它们的用法命名它们。我会调用 CategoryItemParameterObject UpdatedCategoryItemNewCategoryItem,具体取决于它是用于更新还是创建操作,并将它们放在单独的 Arguments 命名空间中。

标签: domain-driven-design cqrs


【解决方案1】:

是命令吗?一个实体? 只是关于它的使用,并添加一个后缀/前缀,为谁阅读代码(不是你,但谁将在 3、6 或 12 个月后完成)提供有关它可能用途的有用信息. 关于第二个问题:是的,没有任何规则可以否认这一点。如果实体可以自己处理命令,那就去做。我有一个命令处理程序,它接受它,加载实体并向它发出命令。它完美无瑕,含义非常清楚。再一次考虑一下谁来维护代码,然后做那些需要更少思考“跳跃”的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2011-12-06
    • 2010-10-21
    • 1970-01-01
    相关资源
    最近更新 更多