Паттерны проектирования Python

Strategy Pattern in Python

Изучите Strategy Pattern in Python на практическом примере, который можно изменить и запустить онлайн.

Что такое Strategy Pattern?

Изучите Strategy Pattern in Python на практическом примере, который можно изменить и запустить онлайн.

Когда это использовать?

  • Решать повторяющиеся задачи объектного проектирования с помощью проверенных структур.
  • Разделять обязанности, чтобы код было проще расширять и тестировать.
  • Использовать общую терминологию проектирования при обсуждении архитектуры в команде.

Пример кода

Запустить код →
main.py
def regular_discount(total): return total
def member_discount(total): return total * 0.8


class Checkout:
    # Strategy: inject the algorithm that is allowed to vary.
    def __init__(self, discount_strategy):
        self.discount_strategy = discount_strategy

    def total(self, amount):
        # Delegate the varying algorithm to the strategy.
        return self.discount_strategy(amount)


checkout = Checkout(member_discount)
print(f"{checkout.total(15):.2f}")

Ожидаемый результат

12.00

Как это работает

Этот пример демонстрирует Strategy Pattern in Python. Измените входные данные, чтобы изучить работу кода.

Измените значения и запустите программу в онлайн-компиляторе Python CodeUtility без локальной установки Python.

Практические задания

Изменяйте входные данные и проверяйте граничные случаи перед работой с большими наборами.

  1. Замените предметную область примера, сохранив структуру паттерна.
  2. Сравните паттерн с более простой реализацией и объясните компромиссы.
  3. Напишите тесты для каждого участника перед добавлением новой реализации.
Запустить в Python IDE →