Подтвердить что ты не робот

Шаблоны проектирования и алгоритмы применения правил к фактам

Я пытаюсь прикрыть требования от клиента для механизма ценообразования в розничной среде. Мы определили механизм ценообразования как действующий по набору правил ценообразования, который устанавливает новые ценовые точки для купленных товаров на основе существующих товаров, уже находящихся в корзине покупок.

Простое правило цены может быть ПОЛУЧИТЬ РУЧКУ 40% ВЫКЛ. Более сложное правило может быть ПОЛУЧИТЬ БЕСПЛАТНУЮ ШИРИНУ, КОГДА ВЫ ПОКУПАЕТЕ 2 ПАНТЕРА И ПОСЛУШАТЬ МЕНЬШЕ $30.

Общая отраслевая практика применения этих правил, по-видимому, является конечной лучшей ценой для клиента, но пришло к выводу, что, возможно, потребуется вариант ранжирования, а также вариант укладки.

Ранжирование позволит использовать правило, которое иначе проиграло бы, чтобы выиграть. Stacking позволит нескольким правилам выиграть.

Я рассмотрел многие из сообщений здесь о SO, касающихся механизмов правил, и мне нужна помощь в определении того, следует ли мне рассматривать один из этих инструментов как часть моего проекта, или если нет, какие шаблоны проектирования и алгоритмы могут быть применимы к дизайн.

Понятно, что это потенциально проблема NP, и количество предметов (фактов), с которыми я буду иметь дело, может превышать 100+ за транзакцию с переоценкой, требуемой при каждом добавлении нового элемента.

4b9b3361

Ответ 1

Есть хорошая статья Мартина Фаулера в "Механике правил" и где их использовать. Посмотрите, помогает ли

http://www.martinfowler.com/bliki/RulesEngine.html

Ответ 2

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

Если движок правил является лишь малой частью вашего приложения или даже хуже: это какой-то код, который не является тем же языком программирования, что и остальная часть вашего приложения... тогда вы должны пересмотреть. Любая часть приложения, которая является внешней от вашего основного приложения (даже база данных является внешней для приложения Java), представляет собой риск.

Тогда есть две возможности: программируйте простой механизм правил самостоятельно или используйте Стратегию или Государственный шаблон.