2
我想开发一个类似于工资计算的系统。薪水具有基本价值。最重要的是,员工可以获得一些奖励或罚则。装饰模式似乎适合这种情况工资计算模式
Salary finalSalary = new HardworkBonus(new LateComingPenalty(new BasicSalary()))
System.out.println("Your total salary is : "+ finalSalary.calculate())
此外,我想保存每个计算的结果。所以最后,即使在计算之后,我可以检索LateComingPenalty有多少。
这似乎是一个共同的问题,即这种类型的发票计算的是involved.There可能是一些比装饰Pattern.Do更好的选择,你有更好的建议?
+1为过度评论。有时装饰模式真的很可怕 – RichardOD 2009-11-13 10:59:16
可能最好使用像BigDecimal这样的任意精度类型来支付金额。 – 2009-11-13 13:11:12
感谢您的回答,但不会错过“最重要的”影响。也许我过分简化了这个问题。每个组成部分都以某种基础运作,这不一定是基本工资。例如,如果我们有基本工资,第一笔奖金=基数的2%,第二笔奖金=第一笔奖金的1%,损失罚款=基数的1%,逾期罚款=到现在为止的10%,所得税= 16%因此计算顺序很重要,计算应该执行一次。我可以用计算的基础初始化SalaryAdjustment,但是这个Calc需要多次执行。 – anergy 2009-11-13 14:02:53