我正在上下课。我已将缩短的属性列表作为示例。
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属性设置器保密,以便任何人都可以更改这些值。在处理薪水后保持数据不变是至关重要的。
我考虑过代表的使用,但我也不确定这是我的答案,因为我仍然无法在Paycheck课程之外开发所需的方法。< / p>
我有没有想到的东西,或者这是一个&#34;你不能吃蛋糕,也不能吃它&#34;那种情况?
答案 0 :(得分:1)
让计算这些值的接口返回它们正在计算的值。将这些接口的实例传递给Paycheck
,它可以执行计算(无需了解接口的实现),然后设置相应属性的值。