ООП паттерны
При работе с кодом применял большинство типовых ООП-паттернов для решения конкретных прикладных задач.
| Паттерн | Типовая задача |
|---|---|
Фабричный метод | Генерация отчётов, клиентские подключения, фабрики тестовых данных. |
Одиночка | Единая точка доступа к инфраструктурным объектам: подключение к БД, настройки, логгер, общие сервисы приложения |
Стратегия | Выбор способа кэширования, хранения файлов, разные стратегии подключения клиента |
Фасад | Краткий доступ к сервисным объектам: чаты, конференции, кэш, логирование и т.д. |
Состояние | Разные состояния игрового поля, игровая механика |
Адаптер | Адаптация внешней библиотеки, оборачивание браузерных API |
Декоратор | Добавление кэша, логирования, middleware-поведения без переписывания ядра. |
Наблюдатель | Объекты подписываются на события через on/off и уведомляют слушателей через trigger. Так распространяются события подключения, устройств, пользователей конференции, чатов и UI-диалогов. |
Строитель | Описатели параметров собирают сложную конфигурацию форм и правил валидации из маленьких объектов FormParam. В Confs и Tariff через наборы new ConfParam(...) / new TariffParam(...) задаются типы, значения по умолчанию, зависимости, ограничения и допустимые значения. |
Шаблонный метод | Генерация отчетов, расчет целевых показателей КБЖУ |
Внедрение зависимостей | Подмена репозитория, сервиса, клиента интеграции через интерфейс. |
Контейнер зависимостей | Автоподстановка сервисов в контроллеры, handlers, listeners, jobs. |
Заместитель | Ленивая загрузка связи, кэш-прокси, отложенный доступ к сервису. |
Посредник | Координация нескольких сервисов через handler или application layer. |
Команда | Консольные команды, очереди, use-case классы для отдельных действий. |
Цепочка обязанностей | Middleware pipeline, валидация, авторизация, последовательные проверки. |
Мост | Частое использование, разделение класса на абстракцию и реализацию, замена наследования композицией |
ORM-паттерны
Active Record
Active Record использовал в Laravel через Eloquent ORM, где модель совмещает доменное состояние и слой работы с базой данных.
Data Mapper
Data Mapper использовал в Spiral Framework через Cycle ORM, где доменная модель отделена от слоя хранения данных.