Шаблоны расчета зарплаты - PullRequest
2 голосов
/ 13 ноября 2009

Я хочу разработать систему, похожую на расчет зарплаты. Зарплата имеет базовое значение. Кроме того, сотрудник может получить некоторые бонусы или штрафы. Декоратор Pattern, кажется, соответствует этому сценарию

Salary finalSalary = new HardworkBonus(new LateComingPenalty(new BasicSalary()))
System.out.println("Your total salary is : "+ finalSalary.calculate())

Кроме того, я хочу сохранить результат каждого вычисления. Таким образом, в конце концов, даже после расчета, я могу узнать, сколько было LateComingPenalty.

Кажется, это распространенная проблема, когда речь идет о такого рода расчетах счетов. Возможно, есть несколько лучших вариантов, чем у шаблона Decorator. У вас есть предложения получше?

1 Ответ

7 голосов
/ 13 ноября 2009

Кажется, что это немного переусердствовать. Я мог бы предложить:

class Salary {
    double base;
    SalaryAdjustment[] adjustments;
    double getSalary() {
        double r = base;
        for (SalaryAdjustment a: adjustments) {
            r += a.getAdjustment();
        }
        return r;
    }
};

В adjustments вы можете добавить свои HardworkBonus и LatePenalty или что-либо еще и получить их позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...