Какие используешь паттерны проектирования

Python Middle Без компании
Какие используешь паттерны проектирования
Ответы
В Python часто применяют следующие паттерны: **1. Singleton** – гарантирует единственный экземпляр класса: ``` class Singleton: _instance = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance ``` **2. Фабрика (Factory)** – создание объектов через отдельный метод: ``` class ButtonFactory: def create_button(self, type_): if type_ == "windows": return WindowsButton() elif type_ == "mac": return MacButton() ``` **3. Наблюдатель (Observer)** – уведомление подписчиков об изменениях: ``` class Subject: def __init__(self): self._observers = [] def notify(self): for observer in self._observers: observer.update(self) ``` **4. Декоратор** – добавление функциональности без изменения класса: ``` def log_time(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) print(f"Time: {time.time() - start}") return result return wrapper ``` Также полезны **Адаптер**, **Стратегия**, **Фасад**. Выбор зависит от задачи – например, Singleton для логгеров, Фабрика для кросс-платформенных UI.