|
Модераторы: LSD |
|
JohnKiedis |
|
||||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 14.4.2016 Репутация: нет Всего: нет |
Всем привет.
Получил критику своего кода касательно того, что применяется процедурный стиль написания. Решил уходить от этого. В частности, сейчас разбираю замену if else statement на strategy pattern. Как один из последних примеров брал http://www.newthinktank.com/2012/08/strate...ttern-tutorial/ По итогу решил сделать вычисление суммы по годовому депозиту - там суть следующая: в зависимости от инвестированной клиентом суммы к ней начисляется определенный процент. Проценты были выбраны следующие: сумма процент меньше 100 1 меньше 1000 1.5 меньше 10000 2 больше 10000 3 Применил следующий подход: - В интерфейсе InterestEvaluation определил метод getEvaluation. - В классах FirstRate, SecondRate, ThirdRate, FourthRate реализовываю этот InterestEvaluation. В них описал вычисление итоговой суммы для каждого процента. - В классе SimpleInterest создал сделал методы выбора и вызова методов вычисления итоговой суммы. - В классах FourthRateEvaluation, ThirdRateEvaluation, SecondRateEvaluation, FirstRateEvaluation написал вызов нужного метода вычисления исходя из введенной суммы инвестиций. Как итог, я не смог уйти от if else, хотя, возможно, сделал код немного более масштабируемым. Кто встречался с данным паттерном, подскажите, что бы улучшили/поменяли/переделали и вообще можно ли сказать, что мной здесь был применен этот паттерн? Спасибо. Привожу код ниже и на googleDrive - interestevaluation
|
||||||||||||||||
|
|||||||||||||||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 1 Всего: 537 |
В данном случае вообще не нужно создавать 4 класса, достаточно одного с параметрами.
Что касается избавления от if, то тут можно создать фабрику InterestEvaluation-ов в которой: Или создаем четыре InterestEvaluation: 1, 1.5, 2, 3 и кладем их в TreeMap по минимальной сумме с которой они работают. И дальше берем минимальный слева. Или (этот вариант мне нравится больше) создаем InterestEvaluation и в качестве параметров туда передаем минимальную сумму. Дальше добавляем их в коллекцию и сортируем ее по убыванию минимальной суммы. Дальше итерируемся и у каждого InterestEvaluation проверяем isApplicable(amount). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Design, Quality, Testing | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |