gpt4 book ai didi

java - DDD - 实体的值对象风格

转载 作者:行者123 更新时间:2023-12-05 01:23:22 31 4
gpt4 key购买 nike

我见过一些具有实体值对象表示的 DDD 项目。它们通常显示为 EmployeeDetailEmployeeDescriptorEmployeeRecord 等。有时它包含实体 ID,有时不包含。

这是一种模式吗?如果有,它有名字吗?有哪些用例?它们是值对象、参数对象还是其他任何东西?它们是在域模型中被引用(作为属性),还是只是作为方法的参数和返回值“ float ”?

超越...

我想知道我是否可以将任何聚合定义为 ID + BODY(详细信息、描述符等)+ METHODS(行为)

public class Employee {
private EmployeeID id;
private EmployeeDetail detail; //the "body"
}

我能否像这样设计聚合以避免在使用此类对象时出现代码重复?

这样做的直接好处是避免聚合工厂方法中那些参数过多的方法。

public class Employee {
...
public static Employee from(EmployeeID id, EmployeeDetail detail){...};
}

代替

public class Employee {
...
public static Employee from(EmployeeID id, + 10 Value Objects here){...};
}

你怎么看?

最佳答案

您提议的是在 Scala 中对聚合进行建模的惯用方法(通过 case classes):您有一个 ID 本质上指向表示状态的不可变对象(immutable对象)图的可变容器(可能还有一些用于定义状态转换的静态函数)。您正在从领域驱动设计的更传统的 OOP 概念转向更多的 FP 概念(来到黑暗面......;))。

如果这样做,您通常会希望对状态进行分区,以便对聚合的操作 [as] 很少 [as possible] 更改状态的多个分支,这样可以尽可能多地重用以前的对象图可能。

关于java - DDD - 实体的值对象风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72460982/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com