Перейти к основному содержимому

Паттерны проектирования в PHP

Паттерны проектирования — это типовые решения распространённых задач в проектировании программного обеспечения. Каждый паттерн представляет собой шаблон, который можно адаптировать для решения конкретной проблемы в вашем коде.

Основные типы паттернов проектирования​

1. Порождающие паттерны​

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

  • Singleton: Гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему.
  • Factory Method: Определяет интерфейс для создания объектов в суперклассе, но позволяет подклассам изменять тип создаваемых объектов.
  • Abstract Factory: Позволяет создавать семейства связанных объектов без указания их конкретных классов.
  • Builder: Позволяет конструировать сложные объекты пошагово.
  • Prototype: Позволяет копировать существующие объекты, не привязывая код к их классам.

2. Структурные паттерны​

Эти паттерны описывают, как собирать объекты и классы в более крупные структуры, сохраняя при этом их гибкость и эффективность.

  • Adapter: Позволяет объектам с несовместимыми интерфейсами работать совместно.
  • Bridge: Позволяет разделить большой класс или набор тесно связанных классов на две отдельные иерархии — абстракцию и реализацию, которые можно развивать независимо друг от друга.
  • Composite: Позволяет компоновать объекты в древовидные структуры и работать с ними так, как будто это единичные объекты.
  • Decorator: Позволяет добавлять объектам новое поведение, помещая их внутрь специальных объектов-обёрток, содержащих это поведение.
  • Facade: Предоставляет упрощённый интерфейс к библиотеке, фреймворку или любому другому сложному набору классов.
  • Flyweight: Позволяет вместить больше объектов в доступную оперативную память за счёт разделения общих частей состояния между объектами вместо хранения всех данных в каждом объекте.
  • Proxy: Позволяет предоставить заменитель или заполнитель для другого объекта.

3. Поведенческие паттерны​

Эти паттерны связаны с алгоритмами и распределением ответственности между объектами.

  • Chain of Responsibility: Позволяет передавать запросы по цепочке обработчиков.
  • Command: Превращает запрос в самостоятельный объект, содержащий всю информацию о запросе.
  • Iterator: Позволяет обходить элементы коллекции, не раскрывая её внутреннего представления.
  • Mediator: Позволяет сократить хаотичные зависимости между объектами.
  • Memento: Позволяет сохранять и восстанавливать предыдущее состояние объекта, не раскрывая деталей его реализации.
  • Observer: Позволяет определить механизм подписки для оповещения множества объектов о любых событиях, происходящих с наблюдаемым объектом.
  • State: Позволяет объекту изменять своё поведение при изменении внутреннего состояния.
  • Strategy: Позволяет определить семейство алгоритмов, поместить каждый из них в отдельный класс и сделать их объекты взаимозаменяемыми.
  • Template Method: Определяет скелет алгоритма в суперклассе, но позволяет подклассам переопределять отдельные шаги алгоритма без изменения его структуры.
  • Visitor: Позволяет отделить алгоритмы от объектов, над которыми они работают.