Часто исползуемые паттерны проектирования в PHP
Порождающие паттерны беспокоятся о гибком создании объектов без внесения в программу лишних зависимостей.
Структурные паттерны показывают различные способы построения связей между объектами.
Поведенческие паттерны заботятся об эффективной коммуникации между объектами.
1. Порождающие паттерны
Singleton (Одиночка) – Гарантирует, что у класса есть только один экземпляр.
Factory Method (Фабричный метод) – Делегирует создание объектов дочерним классам.
Abstract Factory (Абстрактная фабрика) – Создает семейства взаимосвязанных объектов.
Builder (Строитель) – Упрощает создание сложных объектов поэтапно.
Prototype (Прототип) – Создает новые объекты путем клонирования существующих.
2. Структурные паттерны
Adapter (Адаптер) – Позволяет объекту работать с несовместимым интерфейсом.
Decorator (Декоратор) – Добавляет новое поведение объекту без изменения его кода.
Facade (Фасад) – Предоставляет упрощенный интерфейс для сложной системы.
Proxy (Заместитель) – Контролирует доступ к объекту (например, кеширование, ленивую загрузку).
Composite (Компоновщик) – Позволяет объединять объекты в древовидную структуру.
Bridge (Мост) – Разделяет абстракцию и реализацию, позволяя изменять их независимо.
3. Поведенческие паттерны
Observer (Наблюдатель) – Реализует подписку на события (используется в Laravel Events).
Strategy (Стратегия) – Позволяет изменять алгоритм выполнения во время работы.
Command (Команда) – Инкапсулирует действие в объекте, например, команды в Laravel.
Mediator (Посредник) – Управляет взаимодействием между объектами, снижая их связанность.
State (Состояние) – Изменяет поведение объекта в зависимости от его состояния.
Chain of Responsibility (Цепочка обязанностей) – Передает запрос по цепочке обработчиков.
Template Method (Шаблонный метод) – Определяет основу алгоритма и позволяет подклассам изменять части.
4. Другие популярные паттерны в PHP
Repository (Репозиторий) – Абстрагирует работу с БД (часто используется в Laravel).
Service (Сервисный слой) – Выносит бизнес-логику из контроллеров.
DTO (Data Transfer Object) – Используется для передачи данных между слоями приложения.
Event Bus (Шина событий) – Используется для обработки событий в асинхронных системах.