代码之家  ›  专栏  ›  技术社区  ›  Arnis Lapsa

DDD模型,聚合根之间的相互作用

  •  5
  • Arnis Lapsa  · 技术社区  · 14 年前

    alt text

    alt text

    我不喜欢的是用红色箭头标记的实体。

    • AR#1是公司
    • AR#2是办公室
    • AR#3为员工
    • 用红色箭头标记的实体被命名为 Country
      • company.Countries.Contains(employee.Country) 必须为真)

    Glossary 关于聚合根:

    对内部成员的临时引用只能在单个操作中传递使用。

    那么,引入“EmployeeCountry”之类的词、删除公司所在国的引用以及检查员工所在国是否与任何公司所在国在招聘操作上匹配,这听起来合理吗?

    还有其他想法吗?

    我怎样才能让我的葡萄看起来像它们应该的样子呢?

    1 回复  |  直到 14 年前
        1
  •  7
  •   Jeff Sternal    14 年前

    在这种情况下 Country 只是一个值对象,而不是一个实体——更不用说聚合根了——所以没有理由更改任何有关设计的内容(没有更多信息)。

    另外,请注意您引用的警告与 聚合根的内部成员

    在Evans的“域驱动设计”中,你可以清楚地看到这一点 The Blue Book "). 例如,请参见第127页的图表(在aggregate roots简介中),其中显示了一个汽车聚合,该聚合引用了引擎聚合。