domain-driven-design - DDD : Instantiate Value objects inside Aggregate or pass it as parameter?

标签 domain-driven-design value-objects

在创建聚合时,我们应该在聚合内创建值对象,还是应该将已经创建的值对象传递给ctor或factory。

 public Booking(DateTime arrivalDate, DateTime departureDate)
 {
      this.ArrivalAndDepartureinformation = new ArrivalAndDepartureInfo(arrivalDate, departureDate);
 }

或者
 public Booking(ArrivalAndDepartureinformation arrivalAndDepartureInfo)
 {
            this.ArrivalAndDepartureinformation = arrivalAndDepartureInfo;
 }

最佳答案

Instantiate Value objects inside Aggregate or pass it as parameter?


  • 如果我们谈论将参数传递给构造函数,则取决于如何使用参数。可能存在一些基础结构限制,可能需要使用原始类型。
  • 如果我们谈论将参数传递给方法,那么Value Objects是我的选择的100%。

  • 通常,我会说最好将值对象传递到您的集合中。

    值对象可以:
  • 使您的语言模型更具表现力
  • 带来安全类型
  • 封装验证规则
  • 自己的行为
  • 关于domain-driven-design - DDD : Instantiate Value objects inside Aggregate or pass it as parameter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39349812/

    相关文章:

    c# - 领域驱动设计中对持久性的调用在哪里

    php - PHP中的值对象与关联数组

    java - JPA 带注释的对象与常规值对象一样

    domain-driven-design - 值对象可以有行为吗?

    Nhibernate 组件映射 : Parent Object null in Value Object while querying from database

    domain-driven-design - 领域驱动设计 - 如何处理部分聚合根的更新

    java - DDD 项目的 Maven 模块布局

    nhibernate - 选择 n+1 问题

    client-server - DDD - 在不更新整个聚合根的情况下更新实体的小细节

    entity - 值对象可以在没有实体的情况下存在吗?