Часто исползуемые паттерны проектирования в PHP

·

2 min read

Порождающие паттерны беспокоятся о гибком создании объектов без внесения в программу лишних зависимостей.

Структурные паттерны показывают различные способы построения связей между объектами.

Поведенческие паттерны заботятся об эффективной коммуникации между объектами.

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 (Шина событий) – Используется для обработки событий в асинхронных системах.