130得票9回答
价值对象 vs 实体对象(领域驱动设计)

我刚开始阅读DDD。我无法完全理解实体对象与值对象的概念..请问有人能够解释一下,当将一个值对象设计为实体对象时,系统可能会面临哪些问题(如可维护性、性能等)?如果能给出示例就更好了...

78得票2回答
价值对象在数据库中如何存储?

我并没有见过具体的例子,但我认为它们保存在数据库中包含实体表内。 比如说,如果我有一个名为Person的实体/聚合根以及相应的Person表,如果它有一个叫做Address的值对象,那么Address的值将保存在这个Person表中! 对于一个拥有其他实体(例如公司等)都有地址信息的领域,...

64得票13回答
暴露不可变对象的状态是否可以?

最近我接触到了不可变对象的概念,我想知道控制状态访问的最佳实践。尽管面向对象的那部分大脑让我想在看到公共成员时退缩,但我认为像这样的东西没有技术问题:public class Foo { public final int x; public final int y; ...

45得票11回答
PHP中的值对象与关联数组

(这个问题以PHP为背景,但并不仅限于PHP。例如任何具有内置哈希的语言也是相关的) 让我们看一下这个例子(PHP):function makeAFredUsingAssoc() { return array( 'id'=>1337, 'heig...

45得票6回答
领域驱动设计中的值对象 - 为什么要是不可变的?

我不明白为什么DDD中的值对象应该是不可变的,也不知道如何轻松实现。(如果有影响,我关注的是C#和Entity Framework。) 例如,让我们考虑经典的地址值对象。如果您需要将“123 Main St”更改为“123 Main Street”,为什么我需要构建一个全新的对象,而不是说m...

42得票5回答
CQRS 中的值对象 - 何时使用

假设我们采用CQRS架构,其中包括命令(Commands)、领域模型(Domain Model)、领域事件(Domain Events)和读取模型数据传输对象(Read Model DTOs)。当然,在我们的领域模型中,我们可以使用值对象(Value Objects),但我的问题是,它们是否也...

22得票7回答
数据传输对象和值对象是一样的吗?

数据传输对象(Data Transfer Object)和值对象(Value Object)是否相同,还是有所不同?如果它们不同,那么我们应该在哪里使用DTO,在哪里使用VO? 我们讨论的编程语言是Java,上下文是:有一个Web应用程序,从数据库中获取数据,然后对其进行处理,最终将处理后的信...

20得票2回答
Doctrine的嵌入式继承

是否可以在Doctrine实体中嵌入值对象并使用继承?我所考虑的情况是:我有一个实体,其中包含一个嵌入式值对象。该值对象具有以下层次结构:class myEntity { /** @Embedded(class = "baseValueObject") */ private $...

17得票6回答
DDD、值对象和ORM

价值对象没有身份。ORM 需要身份来更新数据库。 如何欺骗 ORM? (将值对象的 ID 标记为“internal”不起作用,因为 ORM 存在于不同的程序集中,将其移动到相同的程序集中是不可接受的。) 提前感谢。

16得票3回答
在领域驱动设计(DDD)中,价值对象的实际优势是什么?

我理解,实体对象具有ID而值对象没有,但在最常见的例子中,你会发现人员实体与地址值对象相关联。相对于将地址属性保留在人员实体中,创建单独的地址对象有何优势呢?