我应该如何在 DDD 中使用单例?

How should I use singleton in DDD?

我正在为当地政府实施一个与学校相关的应用程序。我有 classes,我想使用以下公式计算成绩:grade = acedemicYear - commencingYear + 1.

您可以通过两种方式建模:

我还是觉得这些不对。我不确定是应该将年份注入模型还是应该在模型内部。另一个问题是学年应该或多或少地手动更改,至少它每年都在不同的日期开始。通过增加学年,成绩 > 8 意味着 class 已完成,因此 class 中的 children 不应出现在当前学生列表中。您怎么看,最好的建模方法是什么?

AcademicYear 当然可以是像您所做的那样的值类型。但这不是把事情复杂化了吗?

如果您的实体类型同时包含 commencingYearacademicYear,您可以轻松控制这些字段的值。因此,如果有人试图输入超出范围的日期,您可以抛出异常。

关于计算,这听起来像是业务规则,因此它应该包装在实体或域服务中的方法中。

即这是一个规则,但是是针对域中特定实体的规则。因此它不应该被包装在某个地方的静态中,而是在正确的实体 class.

中实现

很难写出更具体的答案,因为我现在已经了解了您的领域或您是如何实施它的。