Полный практический курс по паттернам проектирования для Python-разработчиков. Охватывает все 23 классических паттерна GoF, архитектурные паттерны (Repository, CQRS, Event Sourcing), asyncio-паттерны и антипаттерны. Каждый паттерн разбирается с глубоким пониманием: когда применять, когда НЕ применять, Pythonic-реализации через декораторы/contextmanager/dataclasses, реальные кейсы из production и рефакторинг легаси-кода.
Что такое паттерны проектирования и когда они нужны. Singleton через __new__, метаклассы и декораторы. Monostate (Borg) как Pythonic-альтернатива.
Фабричные методы через @classmethod, абстрактные фабрики для семейств объектов. Dependency Injection через фабрики.
Построение сложных объектов пошагово. Fluent Interface через метод __enter__ и контекстные менеджеры. Dataclasses и attrs для Builder.
Прототипирование через copy/deepcopy. Магические методы __copy__ и __deepcopy__. Когда shallow copy достаточно, а когда нужен deep copy.
Адаптация интерфейсов через множественное наследование и композицию. Facade для упрощения сложных подсистем.
Разделение абстракции и реализации. Древовидные структуры через Composite. Применимость в Python.
Динамическое добавление поведения через декораторы функций и классов. functools.wraps, contextlib.contextmanager, декораторы с параметрами.
Оптимизация памяти через общие объекты. __slots__ для экономии памяти. Interning строк и кэширование мелких объектов.
Контроль доступа к объектам. Virtual Proxy для отложенной загрузки. Property-based lazy loading, __getattr__ и дескрипторы.
Цепочки обработчиков. Middleware-паттерн в веб-фреймворках. Обработка ошибок и short-circuit evaluation.
Инкапсуляция действий как объектов. Реализация отмены/повтора операций. Команды через callable-объекты и functools.partial.
Итераторы через __iter__ и __next__. Генераторы и yield from. Lazy evaluation и бесконечные последовательности.
Централизованное взаимодействие объектов. Event Bus для слабой связанности. asyncio.Queue для асинхронных событий.
Сохранение состояния объектов. Pickle для сериализации. dataclasses.asdict и __getstate__/__setstate__.
Реактивное программирование через наблюдателей. Pub/Sub для распределённых систем. Слабые ссылки через weakref.
Управление состоянием через объекты. Конечные автоматы (FSM). Библиотека transitions и state_machine.
Семейство алгоритмов через стратегию. Dependency Injection через конструктор и инжекторы. dependency_injector.
Скелет алгоритма в базовом классе. Hooks для расширения поведения. ABC и @abstractmethod.
Операции над объектами без изменения классов. Double dispatch через singledispatch. Pattern matching Python 3.10+.
Абстракция доступа к данным. Unit of Work для транзакций. SQLAlchemy и asyncpg примеры.
Разделение чтения и записи. События как источник истины. Проекции и материализованные представления.
Асинхронные паттерны: Producer-Consumer, Rate Limiter, Circuit Breaker, Retry с экспоненциальной задержкой.
Распространённые ошибки: God Object, Singleton-глобал, Premature Optimization, Leaky Abstractions. Рефакторинг к чистому коду.