【问题标题】:Is a "domain object" any class that represents business rules?“域对象”是代表业务规则的任何类吗?
【发布时间】:2010-11-21 19:58:46
【问题描述】:

我遇到了“域对象”一词,并在 Google 上找到了几个定义,但我只是想验证我的理解是否正确。

这仅仅是代表业务规则的任何类吗?因为“域”一词通常表示特定于某些本地问题集的规则,例如如何计算所得税。

那么用于计算所得税的领域对象将是您编写的代表所有税收规则的类?

【问题讨论】:

    标签: domain-driven-design terminology domain-object


    【解决方案1】:

    这将是一个域服务域对象 类似于 IncomeTaxPayer。该对象可能有一个 Taxes 属性,该属性调用 Domain Service 以根据规则计算应缴税额。

    【讨论】:

    • 所以域对象是名词;域服务是动词。如果我理解您,域对象本身不会执行任何操作 - 它仅代表一组属性 - 它由域服务执行。
    • 这就是一些人所说的“贫血领域模型”。域对象只不过是一个没有重要行为的数据传输对象。这是做事的一种方式,但绝不是唯一的方式。
    • @tom w:域对象可以执行一些操作,但只能进行少量计算。对于计算税等更复杂的规则,域服务通常是要走的路。 @duffymo:确实,不是唯一的方法
    • @Crossbrowser:谢谢。您的描述是对该术语最常见的理解吗?
    • @tom w:我不知道,但我在领域驱动设计方面拥有超过 2 年的经验,这就是我们对工作的看法。
    【解决方案2】:

    域对象是代表业务域中给定实体的任何对象。这有几种口味。然而,一般来说,域对象包含数据和正在建模的实体的任何规则。有些人选择在物理上分离这些关注点,以便业务规则不是与数据在同一对象中的过程。无论您选择何种实现方式,域对象都会以模块化方式对数据和规则进行逻辑分组。

    【讨论】:

      猜你喜欢
      • 2019-08-07
      • 2020-02-20
      • 2013-10-25
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 2021-05-03
      • 2011-08-16
      • 2011-04-30
      相关资源
      最近更新 更多