← К задачам
Средне · +4Паттерны

Паттерн «Стратегия»: способы скидки

Реализуйте паттерн Стратегия для расчёта цены со скидкой.

Сделайте три класса-стратегии с методом apply(price):

  • NoDiscount — возвращает цену без изменений;
  • PercentDiscount(pct) — снимает pct процентов;
  • FixedDiscount(amount) — вычитает amount, но не ниже 0.

И класс Cart: по умолчанию стратегия NoDiscount, метод set_strategy(strategy) подменяет её, а total(price) возвращает итог.

class NoDiscount:
    def apply(self, price):
        ...

class PercentDiscount:
    def __init__(self, pct):
        ...
    def apply(self, price):
        ...

class FixedDiscount:
    def __init__(self, amount):
        ...
    def apply(self, price):
        ...

class Cart:
    def __init__(self):
        ...
    def set_strategy(self, strategy):
        ...
    def total(self, price):
        ...
Для запуска тестов необходима авторизация.
Поддержать проект