java - 工资计算模式

标签 java design-patterns

我想开发一个类似工资计算的系统。薪水有一个基本值(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 中,您可以添加您的 HardworkBonusLatePenalty 或其他任何内容,稍后再取回它们。

关于java - 工资计算模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728492/

相关文章:

java - 使用 Java/JSP 对表单结果重新排序

c# - wcf中的单例模式

design-patterns - 在整洁的代码书中定义正常流程是什么意思?

java - 使用列表而不是装饰器模式?

node.js - 所有连接在应用程序提供服务之前连接

Java 和 .NET 互操作 (RSA) 签名

Java : Parsing xml file using SAX/XPATH

java - 如何在所有设备上同时触发事件而不考虑时区

java - 工厂类 vs Spring DI

Java GUI - Web 浏览器和打开链接