Проблема | Спроектировать изменяемые, но надежные алгоритмы или стратегии. |
Решение | Определить для каждого алгоритма или стратегии отдельный класс со стандартным интерфейсом. |
Пример | Обеспечение сложной логики вычисления стоимости товаров с учетом сезонных скидок, скидок постоянным клиентам и т. п. Данная стратегия может изменяться.
Создается несколько классов "Стратегия", каждый из которых содержит один и тот же полиморфный метод "ЦенаРассчитать". В качестве параметров в этот метод передаются данные о продаже. Объект стратегии связывается с контекстным объектом (тем объектом, к которому применяется алгоритм). |