DTO 是贫血 model/anemic 值对象吗?

Are DTO anemic model/anemic value object?

贫血模型是没有...

"Anemic domain model is the use of a software domain model where the domain objects contain little or no business logic (validations, calculations, business rules etc.)."

DTO是没有业务逻辑的贫血模型吗?而且,又是一个没有业务逻辑的 balie 对象?

首先让我们将行为一分为二:读取行为和写入行为,这样我们就可以说同一种语言了。

Is a DTO an anemic model without business Logic?

你不能说 DTO 是贫血的还是不是贫血的,因为 DTO 是不可变的,而贫血只在架构的 mutating/write 端有意义(例如 CQRS 中的命令端),但如果我们强制是的,根据定义,DTO 是贫血的并且没有行为(既不读也不写):“DTO does not have any behavior except for storage and retrieval of its own data”。

A Value object 有行为(读取行为)。例如,它实现了测试两个值对象是否相等的行为。

稍微扩展一下答案,Aggregate roots 和嵌套 Entities 具有写入端的行为(各种验证)。