/
GlebBavykin
/
python_sketches
Обзор
Документация
Войти
/
GlebBavykin
/
python_sketches
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
design_patterns/behavioral/strategy.py
40 строк
1 KB
Gleb Bavykin
renaming
11 июл 2026, 19:01
11 июл 2026, 19:01
4a59f68
Код
Авторство
О чём код?
import logging from abc import ABC, abstractmethod logger = logging.getLogger(__name__) # 1. Интерфейс Стратегии class AuthStrategy(ABC): @abstractmethod def authenticate(self, user: str): raise NotImplementedError("This is a strategy method. You should implement this!") # 2. Конкретные стратегии class GuestAuth(AuthStrategy): def authenticate(self, user: str = "guest"): """ Авторизации гостя """ logger.info(f"Guest authorization: {user}") class UserAuth(AuthStrategy): def authenticate(self, user: str): """ Авторизации обычного пользователя """ logger.info(f"Regular user Authorization: {user}") # 3. Контекст class AuthContext: def __init__(self, strategy: AuthStrategy = UserAuth()): self._strategy = strategy def set_strategy(self, strategy: AuthStrategy): self._strategy = strategy def login(self, user: str = "user_1"): return self._strategy.authenticate(user)