DDD 聚合和值对象

2024-05-05

我想问一下关于DDD功能的问题。假设我们有两个聚合,每个聚合都包含值对象地址。根据 Eric Evans DDD,我们应该将聚合彼此隔离,因此第一个聚合的聚合根不能有指向 Address 的链接。坦白说,这对我来说似乎没有意义,所以问题是如何解决这种情况?哪个聚合应包含地址?

Thanks


您可以使用相同的值对象。但只有当聚合根存在于相同的有界上下文中并且因此对于两个聚合具有相同的含义时才执行此操作。如果聚合存在于不同的有界上下文中,则有 2 个单独的聚合并重复。 Eric 试图解决的问题是将一种有界上下文的关注点泄露给另一种。

对于大多数人来说,实体与值对象的担忧归结为人们对数据重复的问题。我们已经接受过训练,能够以单一规范模型的第三范式进行思考。 DDD 通过在需要的地方强制重复并允许曾经被认为是合一的概念来对抗不可避免的复杂性。

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DDD 聚合和值对象 的相关文章

  • 为什么service层和dao层总是有单一的实现接口?

    我工作过 见过一些 spring hibernate Web 应用程序项目 它们具有与实际服务和 dao 类一样多的接口 我一直认为这两个是拥有这些单一实现接口的主要原因 Spring 可以将实际实现连接为给定类中的依赖项 松散耦合 pub
  • 不变量和验证规则有什么区别?

    我经常看到这个词不变量在DDD中 Here https msdn microsoft com en us magazine hh205755 aspx迪诺 埃斯波西托谈到了这一点 如果我查看 NET 库 我会看到验证属性 https msd
  • Asp.Net MVC + CSLA + DDD 可能吗

    前几天 我被要求审查一个基于 ASP NET MVC CSLA DDD 域驱动设计 的系统 该系统的第一个版本是基于ASP NET MVC CSLA 第二个版本是在此基础上添加了 DDD 原因是 嗯 我不知道是什么 当我查看两种不同架构的图
  • DDD - 使用 Doctrine 2 的有界上下文之间的关联映射

    我正在努力理解使用 Doctrine 2 实现来自不同有界上下文的两个实体之间的关联映射的正确方法 假设有两个 User 和 Post 实体分别属于 User 和 Content 有界上下文 内容 上下文中还有一个 用户 概念 它通过多对一
  • 我可以在 DDD 中拥有“不完整”的聚合吗?

    DDD 规定您只能通过实体的聚合根来访问实体 举例来说 你有一个聚合根 X 它可能有一个lot子 Y 实体的数量 现在 对于某些场景 您一次只真正关心这些 Y 实体的子集 也许您将它们显示在分页列表或其他内容中 那么是否可以实现一个存储库
  • 使用服务的 DDD 实体

    我有一个应用程序 我试图使用至少一个名义上的 DDD 类型的域模型来构建 并且正在努力解决某个部分 我的实体有一些业务逻辑 这些逻辑使用我当前在某些域服务中拥有的一些财务计算和费率计算 以及我放入值对象中的一些常量值 我正在努力解决如何让实
  • ASP.NET MVC Web 应用程序中视图逻辑和域逻辑之间的混淆

    我对域 应用程序逻辑和用户界面逻辑感到困惑 为了说明我想要确定的内容 我将在下面描述一个虚构的程序以供说明 1 想象一个带有一组 3 个级联下拉菜单的小型应用程序 当您选择一个下拉列表时 它会触发 jQuery Ajax GET 最终到达
  • 领域驱动设计中的 WCF 序列化和值对象模式

    Eric Evans 所著的 领域驱动设计 一书描述了称为值对象的模式 值对象的重要特征之一是它是不可变的 作为一个例子 我有一个值对象 Clinic 其中must有名字和id 为了使其成为值对象 我不提供名称和 ID 的设置器 另外 为了
  • 具有行为和 ORM 的丰富域模型

    观看 Jimmy Bogard 的 NDC12 演示 Crafting Wicked Domain Models 后 http ndcoslo oktaset com Agenda http ndcoslo oktaset com Agen
  • BL 服务:异常还是方法结果?

    最好的方法是什么 为什么 V1 try var service IoC Resolve
  • 如何定义分层数据结构的DDD聚合根?

    我目前正在尝试将领域驱动设计原则应用于我的开发实践 我一直致力于如何为按层次结构组织的数据定义聚合根 我们以文件夹结构为例 每个文件夹可以有 0 N 个子文件夹 子文件夹 0 N 也可以有 0 N 个子文件夹 依此类推 我对文件夹及其所有直
  • 如何在领域层使用工作单元

    我正在尝试在 我的服务 类中使用工作单元模式 我有我的 CompanyService 课程 public class CompanyService ICompanyService private readonly ICompanyRepos
  • 涵盖 .NET 中的 TDD、DDD 和设计模式的书籍

    我想要一本能够真正让我全面了解使用 C TDD ASP NET MVC DDD 和设计模式 例如存储库模式 的现代 ASP NET 开发的书 我非常擅长 C 和 ASP NET MVC 但想填补空白 如果您对涵盖这些主题的一两本书有很好的体
  • 有界上下文、子域和通用语言

    a 对于包含两个或多个子域的 BC 存在概念重叠的可能性 甚至更糟糕的是 相同的概念 由其中几个子域使用 可能会被每个子域以不同的方式解释 理解 无论如何 如果 BC 确实包含许多子域 它是否应该提供几种通用语言 每个子域一种 或者所有子域
  • 定义具有多种消息类型的消息传递域

    到目前为止 我见过的大多数 F 消息传递示例都使用 2 4 种消息类型 并且能够利用模式匹配将每条消息定向到其正确的处理函数 对于我的应用程序 由于处理和所需参数的不同性质 我需要数百种独特的消息类型 到目前为止 每个消息类型都是其自己的记
  • 使用组合来表示“is – a”关系时出现的问题

    我正在为人力资源系统开发系统 有会计员工和程序员员工 加入公司的第一个月 员工没有被赋予任何角色 一名员工可以同时担任会计师和程序员 我有一个由以下代码所示的设计 现在 我需要通过实现新功能来增强系统 解雇所有会计师 终止意味着将员工的状态
  • 除了“真实”对象之外,DDD 存储库还可以使用摘要对象吗?

    假设我正在创建一个存储库来存储数字电子书 如下面的界面所示 该存储库将存储书籍的实际文本以及标识书籍的元数据 标题 作者 出版商 ISBN 等 public interface IBookRepository void AddBook Bo
  • CQRS - 读取端的事件重播

    我读过几篇关于 CQRS 的博客 它们都解释说 在写入端 事件会持久保存在事件存储中 并且根据请求 事件将被检索并聚合重播 我的问题是为什么读取端不需要聚合事件重播 因为您的读取端不使用聚合 读取端实现为投影 它根据聚合发出的事件流计算当前
  • 寻找领域事件的例子

    有谁知道在哪里可以找到域事件实现的示例代码 如乌迪 达汉 http www udidahan com in 领域事件 救赎 http www udidahan com 2009 06 14 domain events salvation 在
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection

随机推荐

  • 从 C++ 代码自动生成流程图 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要自动地用 C 代码构造流程图 最好每个源文件一个流程图 有没有任何工具 最好是 C Python
  • 批量设置变量=%变量:~1%是什么意思

    谁能解释一下是什么 1 在批处理文件中的以下语句中 我分配的值 variable到服务器名称并尝试过echo variable 我得到与输出相同的服务器名称 谁能解释一下下面的语句是如何工作的 set variable variable 1
  • 如何使用 Kinect 追踪一个人 (trackingID)

    我想跟踪第一个人 并使用这个人的右手在我制作的应用程序中导航 我可以接管光标 现在我只想跟踪一个人 因此 基本上 当一个人在程序中导航时 有人走在他身后或与这个人一起看 如果他们移动 kinect 不应该识别其他任何人 我怎样才能实现这个
  • 在链接时合并全局数组/从多个编译单元填充全局数组

    我想定义一系列的东西 比如事件处理程序 的内容 该数组在编译时是完全已知的 但定义在 多个编译单元 分布在多个库中 至少在最终 静态 链接之前是相当解耦的 我想要 也保持这种方式 因此添加或删除编译单元将 还可以自动管理事件处理程序 而无需
  • 在 JSF 应用程序中通过反射读取托管 Bean 的内容

    我想以自动生成的方式打印出支持 bean 的内容 所以所有的内容都出现在一个JSP上 无论如何 这可能吗 提前致谢 丹尼尔 一种方法是使用JavaBean API http java sun com javase 6 docs api ja
  • mysqli_result 无法转换为 int [重复]

    这个问题在这里已经有答案了 我想将 SQL COUNT 的结果存储在变量中 然后将它们相除 但是出现错误 注意 类 mysqli result 的对象在 中无法转换为 int countrows SELECT count AS NumRow
  • ArrayAdapter.getCount() NullPointerException

    我的 Android 应用程序中有以下代码 protected ArrayList
  • C# - 日期时间构造函数调用

    所以 我有这个程序 它有一个输入为 DateTime 的构造函数 但是每当我尝试创建该类的对象并传递 DateTime 作为参数时 就会出现错误 代码如下 public Student DateTime dob DateofBirth do
  • Code First:避免鉴别器列并保留继承

    在我的项目中我有 public class BaseEntity Key public int Id get set 然后我必须定义 10 多个 POCO 类来定义数据库中的表 public class MyTable BaseEntity
  • plm回归中的错误

    同事 我有面板数据 Company year Beta NI Sales Export Hedge FL QR AT Foreign 1 1 2010 2 2052800 293000 1881000 78 6816 0 23 5158 1
  • 捕获由纯 C++ dll 中的 MFC 应用程序生成的 Windows 消息

    首先 这可能吗 我有一个与某些硬件接口的第三方 dll 它是用MFC编写的 我 从 dll 供应商处 收到了一个示例 Visual Studio 2010 解决方案 该解决方案只有一个项目 调用相关第三方 dll 的 MFC 应用程序 ex
  • 如何创建或稳定 FMDB 中两个表之间的关系?

    我是 iOS 开发新手 也是 SQLITE 数据库新手 我在我的项目中使用 FMDB 作为包装器 我有两个表 1 ParticepentsTable and 2 ExerciseTable ParticepentsTable包含 4 行 例
  • SQLSTATE[HY000]:一般错误:1215 无法添加外键约束 laravel 9

    尝试分配外键 但是当您运行迁移时 我收到此错误 我不明白问题是什么 SQLSTATE HY000 一般错误 1215 无法添加外键约束 SQL alter tablecategories添加约束categories parent key f
  • 有没有办法找出我尚未同步的变更集?

    在 TFS 中我可以这样做 gt tf get preview 找出自上次同步以来哪些文件已更改 但我想知道这些文件更改属于哪些变更集 类似 tf历史记录 的输出应用于我缺少的更改 有内置的方法可以做到这一点吗 注意 我是一个命令行人员 因
  • Javascript:typeof表示“函数”,但它不能作为函数调用

    这次我对 Javascript 真的很困惑 var x Array prototype concat call typeof x function x Uncaught TypeError x is not a function 这里到底发
  • Altair 限制条数

    假设我有一个像这样的数据框 label counts 4 4 8 5 5 7 6 6 6 7 7 5 0 0 4 1 1 3 2 2 2 3 3 1 我想用 Altair 制作一个条形图 其中条形的高度是计数 标签是标签 如果我想要前 3
  • 如何在redux中设置初始状态

    我试图弄清楚如何在 redux 中设置商店的初始状态 我在用着https github com reactjs redux blob master examples todos with undo reducers index js htt
  • 如何在 CSS 选择器中使用 JSF 生成的带有冒号“:”的 HTML 元素 ID?

    我一直在使用 JSF 处理一个简单的 Java EE 项目
  • ASP.NET MVC 中的异步控制器

    我检查了 MVC 4 0 中的 System Web Mvc AsyncController 它有注释 提供与 ASP NET MVC 3 的向后兼容性 这是否意味着 MVC 4 中有异步控制器的新实现 MVC 4 0 启用异步控制器以便将
  • DDD 聚合和值对象

    我想问一下关于DDD功能的问题 假设我们有两个聚合 每个聚合都包含值对象地址 根据 Eric Evans DDD 我们应该将聚合彼此隔离 因此第一个聚合的聚合根不能有指向 Address 的链接 坦白说 这对我来说似乎没有意义 所以问题是如