ane*_*rgy 2 java design-patterns
我想开发一个类似于薪水计算的系统.薪水有基本价值.最重要的是,员工可以获得一些奖金或惩罚.装饰模式似乎适合这种情况
Salary finalSalary = new HardworkBonus(new LateComingPenalty(new BasicSalary()))
System.out.println("Your total salary is : "+ finalSalary.calculate())
Run Code Online (Sandbox Code Playgroud)
另外,我想保存每个计算的结果.所以最后,即使经过计算,我也可以检索LateComingPenalty的数量.
这似乎是一个常见的问题,涉及这种发票计算.可能有一些比装饰模式更好的选择.你有更好的建议吗?
这似乎有点过度工程.我可能会建议:
class Salary {
double base;
SalaryAdjustment[] adjustments;
double getSalary() {
double r = base;
for (SalaryAdjustment a: adjustments) {
r += a.getAdjustment();
}
return r;
}
};
Run Code Online (Sandbox Code Playgroud)
在adjustments您可以添加HardworkBonus和LatePenalty或任何其他的,后来检索.