如何保持私有属性的可扩展性



我正在研究下面的类。 例如,我缩短了属性列表。

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 ,它可以执行计算(无需了解有关接口实现的任何信息(,然后让它设置相应属性的值。

最新更新