我正在研究下面的类。 例如,我缩短了属性列表。
public class Paycheck
{
public decimal Gross { get; private set; }
public decimal FederalWithholdingTax { get; private set; }
public decimal StateWithholdingTax { get; private set; }
// ...
}
现在我的想法是创建一个界面来计算所有税款......
public interface IPaycheckDeductionCalculator
{
void Calculate();
}
之后的想法是在Paycheck类之外创建可以执行计算/扣除的方法。 随着法律和工资单流程的运作方式,如何执行扣除和执行扣除内容都在不断变化,因此我希望保持可扩展性的简单性。
我的困境是,我想保持薪水属性设置者的私密性,以便任何人都可以更改这些值。 在处理薪水后保持数据不变至关重要。
我考虑过使用代表,但我也不是那么确定这是我的答案,因为我仍然无法在薪水类之外开发所需的方法。
有什么我没有想到的,还是这是一种"你不能吃你的蛋糕也吃"的情况?
让计算这些值的接口返回它们正在计算的值。 将这些接口的实例传递给 Paycheck
,它可以执行计算(无需了解有关接口实现的任何信息(,然后让它设置相应属性的值。