gpt4 book ai didi

domain-driven-design - 应如何执行“总根”规则?

转载 作者:行者123 更新时间:2023-12-04 04:23:25 25 4
gpt4 key购买 nike

在网上搜索时,我遇到了埃里克·埃文斯(Eric Evans)的书中列出的一些规则,这些规则应适用于汇总:

  • 根实体具有全局标识,并最终负责检查不变量
  • 根实体具有全局标识。边界内的实体具有本地身份,仅在聚合内唯一。
  • 除了根实体,聚合边界之外的所有内容都不能保存对内部任何内容的引用。根实体可以将对内部实体的引用传递给其他对象,但是它们只能短暂地使用它们(在单个方法或块内)。
  • 只能通过数据库查询直接获得“聚合根”。其他所有事情都必须通过遍历来完成。
  • 聚合内的对象可以保存对其他聚合根的引用。
  • 删除操作必须一次删除聚合边界内的所有内容
  • 当对集合边界内的任何对象进行更改时,必须满足整个集合的所有不变量。

  • 从理论上讲,这一切似乎都很好,但是我看不出这些规则在现实世界中如何由 强制为实现。

    以规则3为例。一旦根实体为外部对象提供了对内部实体的引用,如何使该外部对象不保留单个方法或块之外的引用?

    (如果对此的实现是特定于平台的,那么我想知道如何在C#/。NET/NHibernate环境中执行该操作。)

    最佳答案

    我不认为您应该让集合为您的外部代码提供访问其实体的权限。

    您告诉您的合计您想要发生什么,并且它可以处理它。

    如果我们有一个合计:汽车。我们不在乎汽油和车轮,我们只是开车。我们向汽车询问有关事物的信息,并且它的回答没有给出内部构造的引用。

    我们问:我们有汽油吗?是的。不:给我坦克的东西,这样我就可以检查我们是否有汽油。

    关于domain-driven-design - 应如何执行“总根”规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2466757/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com