我正在为当地政府实施与学校相关的应用程序。我有课程,我想使用以下公式计算成绩:grade = acedemicYear - commencingYear + 1
。
您可以通过以下两种方式进行建模:
AcademicYear.getInstance() - this.commencingYear + 1
Calendar.getAcademicYear() - this.commencingYear + 1
我仍然感觉不到这些。我不确定是否应该将年份注入模型中,或者它应该在模型中。另一个问题是学年应该或多或少地手动改变,至少每年都会在不同的日期开始。通过增加学年的等级> 8表示课程已完成,因此该班级的孩子不应该在当前学生列表中。您如何看待,对此进行建模的最佳方式是什么?
答案 0 :(得分:1)
AcademicYear
当然可以是像你一样的价值类型。但是,这不是复杂的事情吗?
如果您的实体类型同时包含commencingYear
和academicYear
,则可以轻松控制这些字段的值。因此,如果有人试图输入一个超出界限的日期,你可以抛出异常。
关于计算,它听起来像业务规则,因此它应该包含在实体或域服务中的方法中。
即。它是一个规则,但是域中特定实体的规则。因此,它不应该包含在静态某处,而是在正确的实体类中实现。
写一个更具体的答案很难,因为我现在已经了解了你的域名或者你如何实现它。