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

时间:2017-02-12 09:18:30

标签: domain-driven-design domain-model domain-modelling

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

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

  • 开始年份和学术年份都有年份类型,而acedemicYear年份是某种单身人士,所以AcademicYear.getInstance() - this.commencingYear + 1
  • 另一个解决方案,开始年份有一个AcademicYear类型,我有一个Calendar类,它给了我当前年份,所以Calendar.getAcademicYear() - this.commencingYear + 1

我仍然感觉不到这些。我不确定是否应该将年份注入模型中,或者它应该在模型中。另一个问题是学年应该或多或少地手动改变,至少每年都会在不同的日期开始。通过增加学年的等级> 8表示课程已完成,因此该班级的孩子不应该在当前学生列表中。您如何看待,对此进行建模的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

AcademicYear当然可以是像你一样的价值类型。但是,这不是复杂的事情吗?

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

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

即。它是一个规则,但是域中特定实体的规则。因此,它不应该包含在静态某处,而是在正确的实体类中实现。

写一个更具体的答案很难,因为我现在已经了解了你的域名或者你如何实现它。