我刚开始阅读DDD。我无法完全理解实体对象与值对象的概念..请问有人能够解释一下,当将一个值对象设计为实体对象时,系统可能会面临哪些问题(如可维护性、性能等)?如果能给出示例就更好了...
我并没有见过具体的例子,但我认为它们保存在数据库中包含实体表内。 比如说,如果我有一个名为Person的实体/聚合根以及相应的Person表,如果它有一个叫做Address的值对象,那么Address的值将保存在这个Person表中! 对于一个拥有其他实体(例如公司等)都有地址信息的领域,...
最近我接触到了不可变对象的概念,我想知道控制状态访问的最佳实践。尽管面向对象的那部分大脑让我想在看到公共成员时退缩,但我认为像这样的东西没有技术问题:public class Foo { public final int x; public final int y; ...
(这个问题以PHP为背景,但并不仅限于PHP。例如任何具有内置哈希的语言也是相关的) 让我们看一下这个例子(PHP):function makeAFredUsingAssoc() { return array( 'id'=>1337, 'heig...
我不明白为什么DDD中的值对象应该是不可变的,也不知道如何轻松实现。(如果有影响,我关注的是C#和Entity Framework。) 例如,让我们考虑经典的地址值对象。如果您需要将“123 Main St”更改为“123 Main Street”,为什么我需要构建一个全新的对象,而不是说m...
假设我们采用CQRS架构,其中包括命令(Commands)、领域模型(Domain Model)、领域事件(Domain Events)和读取模型数据传输对象(Read Model DTOs)。当然,在我们的领域模型中,我们可以使用值对象(Value Objects),但我的问题是,它们是否也...
数据传输对象(Data Transfer Object)和值对象(Value Object)是否相同,还是有所不同?如果它们不同,那么我们应该在哪里使用DTO,在哪里使用VO? 我们讨论的编程语言是Java,上下文是:有一个Web应用程序,从数据库中获取数据,然后对其进行处理,最终将处理后的信...
是否可以在Doctrine实体中嵌入值对象并使用继承?我所考虑的情况是:我有一个实体,其中包含一个嵌入式值对象。该值对象具有以下层次结构:class myEntity { /** @Embedded(class = "baseValueObject") */ private $...
价值对象没有身份。ORM 需要身份来更新数据库。 如何欺骗 ORM? (将值对象的 ID 标记为“internal”不起作用,因为 ORM 存在于不同的程序集中,将其移动到相同的程序集中是不可接受的。) 提前感谢。
我理解,实体对象具有ID而值对象没有,但在最常见的例子中,你会发现人员实体与地址值对象相关联。相对于将地址属性保留在人员实体中,创建单独的地址对象有何优势呢?