我有一类:
public class Adjustment
{
// removed some code...
public decimal Overtime { get; set; }
public decimal HolidayPay { get; set; }
// FK
public int SalaryId { get; set; }
public Salary Salary { get; set; }
}
public class Salary
{
// removed some code...
public int SalaryId { get; set; }
public decimal HourlyRate { get; set; }
}
我正在使用策略模式计算加班费,因为我会根据日期类型(枚举)进行各种计算。假设我们有RegularRate类和SpecialRate类,它们将实现CalculateOvertimeRate的方法。
现在,CalculateOvertimeRate取决于Salary类的小时费率,小时费率的计算也会根据日期类型而有所不同,所以我假设我必须再次实施策略模式。问题是,我应该将整个计算方法提取到域服务并仅将它们作为一个类吗?或者代码应该保持不变?我在这里违反了SRP和SoC吗?感谢。