Использовал ли паттерн Стратегия (Strategy)
Python
Senior
Без компании
Использовал ли паттерн Стратегия (Strategy)
Ответы
Да, паттерн Стратегия полезен, когда нужно выбирать алгоритм во время выполнения или иметь несколько взаимозаменяемых вариантов поведения.
**Пример:**
```
from abc import ABC, abstractmethod
class PaymentStrategy(ABC):
@abstractmethod
def pay(self, amount):
pass
class CreditCardPayment(PaymentStrategy):
def pay(self, amount):
print(f"Paid {amount} via Credit Card")
class PayPalPayment(PaymentStrategy):
def pay(self, amount):
print(f"Paid {amount} via PayPal")
class PaymentContext:
def __init__(self, strategy: PaymentStrategy):
self._strategy = strategy
def execute_payment(self, amount):
self._strategy.pay(amount)
# Использование
credit_card = CreditCardPayment()
paypal = PayPalPayment()
context = PaymentContext(credit_card)
context.execute_payment(100) # Paid 100 via Credit Card
context = PaymentContext(paypal)
context.execute_payment(200) # Paid 200 via PayPal
```
**Плюсы:**
- Гибкость — можно менять стратегии на лету.
- Изолирует код алгоритмов от клиентского кода.
- Упрощает добавление новых стратегий.
**Минусы:**
- Усложнение кода, если стратегий мало или они редко меняются.
- Клиент должен знать о различиях стратегий.