Какой паттерн проектирования лучше использовать для работы со скидками? Есть объект цена, которая знает определенные данные о товаре.
К цене могут примерятся различные скидки, которые применяются зависимости от различных параметров. (категория товара, день недели, текущий пользователь)
Необходимо присвоить цены и скидки на группу товаров. Как это лучше всего сделать, не прибегая к куче foreach и if.
Пока смотрю в сторону компоновщика, но может есть более специализированный паттерн?

21 Авг 2019 в 07:03
174 +1
0
Ответы
1

Для работы со скидками в данном случае можно использовать паттерн Стратегия (Strategy). Этот паттерн позволяет определить семейство алгоритмов, инкапсулировать каждый из них и делать их взаимозаменяемыми. Таким образом, вы можете создать различные классы-стратегии для различных типов скидок (например, скидка по категории товара, скидка по дню недели, скидка для конкретного пользователя) и затем применять их к объекту цены в зависимости от заданных параметров.

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

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

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 340 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир