问题标签 [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 投票
2 回答
172 浏览

apache-flex - 使用 flex 模块进行开发时,我应该将 VO 添加到库项目中吗?

我正在 Flex 中开发基于模块的应用程序,我正在考虑将我所有的值对象 (VO) 移动到一个库项目中,我想知道是否有人认为这是一个坏主意或有任何替代建议。

当前结构:我有一个由 shell 应用程序和 3 个模块组成的项目。这些模块包含大约 10 个自定义组件,每个组件在运行时动态加载。我的问题是组件 A(在模块 A 中)需要将数据传递给组件 B(在模块 B 中)。因此,当发生这种情况时,我将组件 A 正在使用的 VO 移动到一个公共文件夹中。然后我通过 VO 并让组件 B 拿起它并做它需要做的任何事情。

所以我在想的是使用现有的库项目并将我所有的 VO 添加到它。这样我就不必将 VO 从模块移动到公共文件夹,这样模块 A 和模块 B 都可以访问它。基本思想是我希望能够将任何模块从 shell 抽象到它自己的小部件或 Air 应用程序中,而不依赖于任何其他模块。

有人认为这是不好的做法吗?如果是这样,为什么?你有其他选择吗?

谢谢!

0 投票
5 回答
8720 浏览

hibernate - 我的 Hibernate 映射中的值对象或实体对象?

我正在尝试设计一个非常简单的应用程序,但我对 Hibernate 对实体和值对象的定义(如 Java Persistence with Hibernate 的第 4 章中所定义)感到有些困惑。

我拥有的是一个带有客户的应用程序,他们可以下订单(一对多关系)。这些订单中的每一个都有许多订单行(也是一对多)。现在,我认为客户有身份(客户编号),订单(订单编号)也是如此,因此它们是实体对象?我的困惑来自订单行。

订单行包含数量、产品编号和价格。订单行没有订单就无法存在,也没有自己的身份,因此我将其视为一个值对象。但是我不能将订单行作为订单表的一部分,因为订单与其订单行之间存在一对多的关系。一对多关系如何与值对象的定义一起工作?从休眠书中:

“值类型的对象没有数据库标识;它属于实体实例,并且其持久状态嵌入在拥有实体的表行中。值类型没有标识符或标识符属性”

如果有人能解决我的困惑,我将不胜感激:)

0 投票
4 回答
3100 浏览

java - java值对象

我是 Java 新手,我必须创建一个值对象(在 Java 中可能称为映射对象),但我的代码似乎不起作用,这是值对象:

我像这样分配一个新的值对象:

因此,如果我注释掉“用户 u = new User();” 我会去断点,但如果我保持它像上面一样,它将停止运行。

附带说明一下,我将这两个文件保存在同一个文件夹中,因此 eclipse 不会导入该文件,这是正确的还是应该导入它?

编辑:

过了一段时间,我发现我必须手动导入文件,我以为我试过了,但显然我没有。

0 投票
1 回答
1751 浏览

domain-driven-design - DDD:实体和值对象的区别有什么用?

实体和值对象都是领域对象。在 DDD 中知道两者的区别有什么用?例如,将域对象视为实体或值对象是否会促进更清晰的域模型?

0 投票
1 回答
3816 浏览

c# - DDD:值对象内部可以有列表吗?

我不精通领域驱动设计,最近我开始为一个项目创建领域模型。我还没有决定使用 ORM(尽管我可能会选择 NHibernate),我目前正在努力确保我的值对象应该就是这样。

我有一些 VO 除了封装“喜欢”的术语外几乎没有其他行为,例如:

这个特定的类有一个对“案例”的引用,它是两个级别的,所以如果说我要访问一个推荐,我可以去:case.social.referral(案例、社交和推荐都是类,有一个社交在一个案例中,并且在一个社交中只有一个推荐)。现在我在输入时正在查看它,我认为我不需要推荐中的案例,因为它可以通过社交实体访问,对吗?

现在,毫无疑问,在我看来这应该是一个 VO,我计划用来将其持久化到数据库的方法是让 NHibernate 为其分配一个代理标识符(我仍然不太清楚,如果有人也可以详细说明一下,它会帮助我,因为我不知道代理标识符是否要求我的 VO 中已经有一个 Id,或者它是否可以在没有 Id 的情况下运行)和/或受保护的 Id 属性不会暴露在 Referral 类之外(仅出于持久化到数据库的目的)。

现在回到我的标题问题:VO 里面是否应该有一个集合(在我的情况下是一个列表)?我只能将其视为数据库中的一对多关系,但由于没有身份,因此似乎不足以使该类成为实体。下面是代码:

这个类目前没有 Id,而 AdultsAtHome 类只有内在类型(字符串、整数)。所以我不确定这是否应该是一个实体,或者它是否可以保留为 VO,我只需要使用他们自己的表和一个私有/受保护的 Id 字段来配置我的 ORM 以使用 1:m 关系,以便ORM 可以持久化到数据库。

另外,我是否应该为每个班级使用标准化表格?我认为,当有可能将类的多个实例分配给实体或值对象和/或有可能与其中一些对象建立 1:m 关系时,我只需要为每个类使用一个表. 对于具有固有类型但嵌套类型的某些值对象使用单个表我没有问题,我认为使用规范化表将是有利的。对此也有什么建议吗?

很抱歉对多个问题如此冗长:

1)我的值对象是否需要一个代理标识符(比如 NHibernate)?

2)如果#1是肯定的,那么这是否需要私有/受保护,以便我的值对象在概念上“仍然”是一个值对象?

3)一个值对象可以有其他值对象(比如一个列表)还是构成一个实体?(我认为这个问题的答案是否定的,但我更愿意在继续之前确定。)

4) 我是否需要从聚合根向下几级的值对象引用聚合根?(我不认为我这样做,这可能是我在编写模型时的疏忽,有人同意吗?)

5) 在让 ORM 为更简单的值对象进行映射的同时,是否可以对某些事物使用规范化表(例如嵌套类型和/或具有集合作为属性的类型,这些属性无论如何都需要它们自己的表来实现 1:m 关系)到属于我的实体的同一张表?

再次感谢。

0 投票
3 回答
1365 浏览

repository - 如何建模价值对象关系?

上下文:
我有一个实体书。一本书可以有一个或多个描述。描述是值对象。

问题:
一个描述可以比另一个描述更具体。例如,如果描述包含书的内容和封面的外观,那么它比仅讨论封面外观的描述更具体。我不知道如何对此建模以及如何让存储库保存它。了解这些关系不是本书或本书描述的责任。其他一些对象可以处理此问题,然后要求存储库保存关系。但是 BookRepository.addMoreSpecificDescription(Description, MoreSpecificDescription) 对于存储库来说似乎很难保存。

这样的事情在 DDD 中是如何处理的?

0 投票
3 回答
1565 浏览

design-patterns - 使用值对象链接方法

在值对象上使用方法链接模式是否可以接受/良好做法(例如,返回一个新对象而不是这个)?是否有实施此解决方案的案例?

我想不出任何缺点,但我想听听你的观点。

0 投票
1 回答
1471 浏览

php - 帮助理解 Flex 中值对象的用法

我在理解 Flex 中的值对象时遇到了一些小问题......我正在尝试从 PHP/MySQL 获取一些数据并将其发送给 Flex,但我遇到了一些(显然)基本问题......

假设我在 Flex 中的对象看起来像这样:

在我的情况下,personDetails是一个数组,理论上,它可能是其他对象......但是真的有必要让它成为一个object吗?VOPerson除了我的班级,我不打算在其他任何地方使用这些数据。它是一些关联数组,我可以很容易地将它转换为另一个对象,但是在我的应用程序中会有很多类似的情况,所以如果不需要它,我想避免制作不必要的(值)对象......

无论如何,任何关于我的问题的提示/提示/链接将不胜感激!:)
非常感谢!

0 投票
1 回答
3313 浏览

actionscript-3 - 值对象和 AS3 中的泛型类有什么不同?

我不明白 ActionScript3 中的值对象和类在结构上有何不同。

如果您决定将任何课程称为 VO,是否可以将其称为 VO?

谢谢。

0 投票
11 回答
24522 浏览

php - PHP中的值对象与关联数组

(此问题使用 PHP 作为上下文,但不仅限于 PHP。例如,任何具有内置哈希的语言也是相关的)

让我们看一下这个例子(PHP):

相对:

方法#1当然更简洁,但是它很容易导致错误,例如

当然,有人可能会争辩说这$myFred->naem同样会导致错误,这是真的。然而,有一个正式的课程对我来说感觉更僵硬,但我不能真正证明它是合理的。

使用每种方法的优点/缺点是什么?人们什么时候应该使用哪种方法?