Skip to content

ООП паттерны

При работе с кодом применял большинство типовых ООП-паттернов для решения конкретных прикладных задач.

ПаттернТиповая задача
Фабричный методГенерация отчётов, клиентские подключения, фабрики тестовых данных.
ОдиночкаЕдиная точка доступа к инфраструктурным объектам: подключение к БД, настройки, логгер, общие сервисы приложения
СтратегияВыбор способа кэширования, хранения файлов, разные стратегии подключения клиента
ФасадКраткий доступ к сервисным объектам: чаты, конференции, кэш, логирование и т.д.
СостояниеРазные состояния игрового поля, игровая механика
АдаптерАдаптация внешней библиотеки, оборачивание браузерных 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, где доменная модель отделена от слоя хранения данных.

См. также

Сайт обновлен и проверен: