问题标签 [value-objects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
39150 浏览

domain-driven-design - 值与实体对象(领域驱动设计)

我刚刚开始阅读DDD。我无法完全掌握实体与值对象的概念。有人可以解释当值对象被设计为实体对象时系统可能面临的问题(可维护性、性能等)吗?例子会很棒...

0 投票
2 回答
4758 浏览

design-patterns - DDD - 值对象与。实体对象

我是 DDD 的新手,并努力理解一些概念。您如何确定在您的域中哪些对象是 Entity 对象,哪些是 Value 对象,以及它们究竟是如何区别对待的?

0 投票
3 回答
3023 浏览

domain-driven-design - 在 DDD 中,值​​对象的实际优势是什么?

到目前为止,我已经了解实体对象有一个 ID,而值对象没有,但在最常见的示例中,您有一个附有地址值对象的人员实体。创建单独的地址对象而不是仅将地址属性保留在 Person 实体中的最大优势是什么?

0 投票
2 回答
2141 浏览

java - 从 xsd 架构生成 ActionScript 值对象

是否有任何工具可用于将 xsd 架构中定义的类型(可能包括也可能不包括其他 xsd 文件)转换为 ActionScript 值对象?我已经在谷歌上搜索了一段时间,但似乎找不到任何工具,我正在考虑编写这样的工具是否会比手动编写我们的值对象节省更多时间。

我一直在考虑的另一种可能性是使用 XMLBeans 之类的工具将模式定义的类型转换为 Java 类,然后在 ActionScript 中转换这些类。但是,我开始意识到那里有大量的 java -> as3 转换器,一般的共识似乎是它们可以工作,即,我不知道哪种工具适合。

有什么想法吗?

0 投票
2 回答
14205 浏览

domain-driven-design - 值对象如何存储在数据库中?

我还没有真正看到任何示例,但我假设它们保存在数据库的包含实体表中。

IE。如果我有一个 Person 实体/聚合根和一个相应的 Person 表,如果它有一个名为 Address 的值对象,那么 Address 值将保存在这个 Person 表中!

这对于我拥有其他实体(例如公司等)的域是否有意义?

(我目前正在编写一个项目管理应用程序并尝试进入 DDD)

0 投票
3 回答
4098 浏览

fluent-nhibernate - NHibernate 中的空值对象

我有一个包含地址作为值对象的人员实体:

它在 NHibernate 文档中声明,如果值对象(Address1、Address2 等)的所有属性都为 null,则整个组件将被映射为 null(即 Person.Address 将为 null)。在所有地址字段为空的情况下,这会给我带来问题,因为在我可能拥有的页面中(我正在做 ASP MVC):

这会因空引用异常而中断。因此,我正在寻找一种干净的方法来将 Address 设置为新的 Address() 对象,而不是 null 如果当我从数据库中加载 Person 时所有字段都为空而不手动执行。我打折了以下想法:

在我的视图中进行空值检查(yuk,可怕)

使数据库字段不可为空(我正在处理旧数据库)

有人有什么想法吗?

0 投票
3 回答
346 浏览

reference - 可变值对象/共享状态(和啤酒酿造!)

我是一个生疏的程序员,试图再次在该领域学习。我断断续续地发现,我的自学和正规教育都导致了一些坏习惯。因此,我试图让我的思想围绕良好的设计模式,以及——通过扩展——当它们是错误的。语言是 Java,这是我的问题:

我正在尝试编写软件来协助啤酒酿造。在酿造过程中,有时您必须用特定种类的啤酒花代替配方中要求的啤酒花。例如,您可能有一个需要“阿马里洛”啤酒花的配方,但您只能得到“Cascade”,它具有足够相似的香气,可以替代;啤酒花具有一定量的 Alpha 酸(每给定质量),两种啤酒花之间的比率是替代公式的一部分。我正在尝试在我的程序中(正确地)对此进行建模。

我最初的目标是拥有两个对象。一个 a HopVariety,它具有关于各种啤酒花的一般描述信息,一个 a HopIngredient,它是 a 的特定实例,HopVariety还包括给定配方中使用的量。HopIngredient应该知道它的多样性,并且HopVariety应该知道什么可以用作它的替代品(并非所有替代品都是对称的)。这似乎是好的 OOP。

问题是这样的:我正在尝试遵循良好的做法并使我的价值对象不可变。(在我的脑海中,我将其归类HopVarietyHopIngredient价值对象,而不是“演员”。)但是,我需要用户能够使用新的可行替换来更新给定的 HopVariety。如果我遵循不变性,这些更改将不会传播到单个成分。如果选择可变性,我会通过共享可变值对象潜在地引入副作用而表现不佳。

因此,选项 B:引入各种类型的 VarietyCollection,并通过名称或唯一标识符松散地耦合成分和品种。然后是 VarietySubstitutionManager,这样品种就不会引用其他品种,而只会引用它们的 id。这与我想要做的背道而驰,因为持有对品种对象的引用具有直观意义,现在我要介绍感觉像是过度抽象的东西,并将函数与数据分开。

那么,我如何在特定实例之间正确共享状态?解决问题的正确或至少最明智的方法是什么?

0 投票
6 回答
4576 浏览

domain-driven-design - DDD、值对象和 ORM

值对象没有身份。ORM 需要身份来更新数据库。

如何欺骗ORM?

(将值对象的 Id 标记为内部将不起作用,因为 ORM 存在于不同的程序集中,并且将其移动到同一程序集是不可接受的)。

提前致谢。

0 投票
2 回答
1921 浏览

nhibernate - NHibernate 上的值对象的单独表

我是 DDD 和 NHibernate 的新手。

在我当前的项目中,我有一个实体 Person,它包含一个值对象,比如说地址。今天,这很好。但也许有一天我会要求我的值对象(在本例中为地址)必须成为一个实体。

在尝试以 DDD 方式对此进行建模之前,以更加以数据为中心的方法,我有一个带有 Id 的表 Person 和另一个表 Address,其 PK 实际上是一个 FK,它是一个 Person 的 Id(即,一对一的关系)。

我一直在阅读,当我将值对象映射为组件时,它的值将被映射为我的实体表上的列(因此,我不会有一对一的关系)。

我的想法是,当需要时,我只需在我的地址表中添加一个代理键,然后它就变成一个实体。

我应该如何使用 NHibernate 进行设计?我是否应该已经将我的地址对象设为实体?

对不起,我什至不知道我的问题是否清楚,我真的迷路了。

0 投票
5 回答
1155 浏览

java - EnumMap 可能被认为是 Java bean 的合理替代品吗?

好奇是否有人考虑过使用 EnumMap 代替 Java bean,尤其是“值对象”(没有行为)?在我看来,一个优势似乎是“属性”的名称可以直接从支持的 Enum 访问,无需反射,因此我认为它会更快。