Калькулятор налогов (03-taxes)
Формулировка задания
Написать класс для подсчета налогового вычета у 3 категорий граждан:
- Физических лиц -
13% - Индивидуальных предпринимателей -
15% - Самозанятых -
6%
Класс должен предоставлять функцию calculateTax, которая принимает категорию налога и сумму, для которой требуется сделать вычисление.
Ожидаемый результат
Налог на 100000 для физлица = 13000
Налог на 1000000 для ИП = 150000
Налог на 10 для самозанятого = 0.6
Запуск через Gradle
gradle run --console=plain
Пояснение к прилагаемому решению
Для выбора категории налога в программе реализован паттерн "Стратегия":
Паттерн Стратегия предлагает определить семейство схожих алгоритмов, которые часто изменяются или расширяются, и вынести их в собственные классы, называемые стратегиями.
Вместо того, чтобы изначальный класс сам выполнял тот или иной алгоритм, он будет играть роль контекста, ссылаясь на одну из стратегий и делегируя ей выполнение работы. Чтобы сменить алгоритм, вам будет достаточно подставить в контекст другой объект-стратегию.
Важно, чтобы все стратегии имели общий интерфейс. Используя этот интерфейс, контекст будет независимым от конкретных классов стратегий. С другой стороны, вы сможете изменять и добавлять новые виды алгоритмов, не трогая код контекста.