【发布时间】:2021-05-19 13:32:11
【问题描述】:
我怀疑应该在哪里检查我的不变量...
例如,我有一个具有以下不变量的 Question 聚合:
- 问题的文本不能为空
- 问题的文本长度必须在 100 到 500 个字符之间
我读过检查不变量的最佳位置是在聚合的构造函数中,但我也读过建议将域逻辑推送到值对象中。
一个可能的聚合实现可能是:
public class Question {
private final id: QuestionId;
private final text: QuestionText
public Question(id: String, text: String) {
// verify invariants
ensureLengthText(text); // this method verifies the invariant
this.id = new QuestionId(id);
this.text = new QuestionText(text);
}
}
QuestionId 和 QuestionText 是值对象。
在这种情况下,总的来说,我们可以明确地看到不变量。
但是,如果我们在 QuestionText 值对象中推送该不变逻辑,总的来说我们将看不到该不变式......那么,最好的方法是什么?
【问题讨论】:
标签: domain-driven-design value-objects