← К задачам
Паттерн «Стратегия»: способы скидки
Реализуйте паттерн Стратегия для расчёта цены со скидкой.
Сделайте три класса-стратегии с методом 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):
...
Для запуска тестов необходима авторизация.