【问题标题】:ddd - value objects to cover every propertyddd - 覆盖每个属性的值对象
【发布时间】:2017-04-01 23:03:17
【问题描述】:

实现与从网站导出产品和导入订单的第 3 方系统的集成。

在设计中已经完成了一些 ddd 工作,我希望继续它。

是否应该用值对象覆盖订单和产品上的每个属性?

这意味着大约 100 个类来涵盖所有可能的属性,这似乎是多余的:

  • ProductSku
  • 产品名称
  • 产品说明
  • 产品价格
  • 等等……

【问题讨论】:

    标签: domain-driven-design


    【解决方案1】:

    是否应覆盖订单和产品上的每个属性 一个值对象?

    在我知道的任何语言中,原始值已经是值对象:不可变且没有标识(即字符串、数字等)。

    如果您指的是“我是否应该创建一个新类来包含该数据 + 行为”,那么我会说 YAGNI。如果您找不到这样做的充分理由(您需要强类型,您需要隐式显式等),那么现在不要这样做。等到你需要它。

    【讨论】:

      【解决方案2】:

      是否应该用值对象覆盖订单和产品上的每个属性?

      他们已经是了。真正的问题是,您是打算隐含地保留该覆盖,还是将其显式化。

      这意味着大约 100 个类来涵盖所有可能的属性,这似乎是多余的:

      哦,它有可能变得比这更纠结。例如,ProductPrice 包含了一个概念 Money(它与 ComputedTaxRoundedTax 相同),其中包括一个 Amount 和一个 CurrencyCode 来表示单位。

      您可能需要认真考虑选择一种语言,在该语言中创建数百个不同的值类不会让人觉得过分。

      另见:

      【讨论】:

        猜你喜欢
        • 2020-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多