我想开发一个类似工资计算的系统。薪水有一个基本值(value)。最重要的是,员工可以获得一些奖金或罚款。装饰者模式似乎适合这种场景
Salary finalSalary = new HardworkBonus(new LateComingPenalty(new BasicSalary()))
System.out.println("Your total salary is : "+ finalSalary.calculate())
此外,我想保存每次计算的结果。所以最后,即使经过计算,我也可以检索到 LateComingPenalty 是多少。
这似乎是涉及此类发票计算的常见问题。可能有一些比装饰模式更好的选择。你有更好的建议吗?
最佳答案
这似乎有点过度设计。我可能会建议:
class Salary {
double base;
SalaryAdjustment[] adjustments;
double getSalary() {
double r = base;
for (SalaryAdjustment a: adjustments) {
r += a.getAdjustment();
}
return r;
}
};
在 adjustments
中,您可以添加您的 HardworkBonus
和 LatePenalty
或其他任何内容,稍后再取回它们。
关于java - 工资计算模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728492/