Вопрос

Для каждого продукта существуют соответствующие калькуляторы затрат, такие как:скидка, скидка продавцом, бонус продавцом, ежемесячная скидка и т.д.В будущем будут добавлены дополнительные калькуляторы затрат.

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

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

Что вы предлагаете?Должны ли мы использовать декораторов, стратегию или схему цепочки ответственности?Или без шаблона.

Это было полезно?

Решение

Все продукты должны использовать все калькуляторы, потому что калькуляторы решают применять свои вычисления на основе свойств продукта, таких как product merchant id, category id, color и т.д.

Если вам нужно, чтобы все продукты использовали все декораторы, то на самом деле вы не получите никакой пользы от шаблона.Означает ли это, что если вы внедряете новый декоратор, все существующие объекты должны быть обновлены, чтобы использовать этот новый декоратор?

Декораторы следует наносить на изделия только тогда, когда это необходимо, и применять только те декораторы, которые необходимы.

Я думаю, вам следует удалить решение изнутри декораторов;что-то еще должно решить, следует ли применять декоратор, и в этом случае оно оборачивает изделие соответствующими декораторами.Таким образом, вы знаете, что если продукт завернут в декоратор, этот декоратор влияет (воздействует?) на продукт.

Другие советы

В шаблоне стратегии изменяется назначение объекта.

Поэтому я думаю, что стратегия была бы хорошим выбором.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top