- Адаптер
Позволяет объектам с несовместимыми интерфейсами работать вместе.Пример: Использование устаревших классов работы с уведомлениями (Mail, Slack, SMS) через сервисы-обертки, которые имплементятся с помощью одного и того же интерфейса, чтобы обеспечить совместимость старых классов и нового кода. Это своего рода адаптация класса под текущие условия
- Мост
Разделяет один или несколько классов на две отдельные иерархии — абстракцию и реализацию, позволяя изменять их независимо друг от друга.Пример: Есть отдельные классы для управления видами страниц (простая, страница каталога, карточка товара), наследованные от абстрактного класса и классы для видов рендера этих страниц (в виде HTML или JSON) имплементирующих интерфейс такого рендера. Получается что Мост обеспечивает связь между этими типами классов
- Компоновщик
Позволяет сгруппировать объекты в древовидную структуру, а затем работать с ними так, как будто это единичный объект.Пример: Класс для управления построением дом-дерева
- Декоратор
Позволяет динамически добавлять объектам новую функциональность, оборачивая их в полезные «обёртки».Пример: Обертка над вызовом сервиса, логируюшая этот вызов
- Фасад
Предоставляет простой интерфейс к сложной системе классов, библиотеке или фреймворку.Пример: Класс для работы со скачиваем и обработкой видео, который скрывает в себе всю сложность работы с АПИ и компрессии видео за одним-двумя публичными методами фасада
- Легковес
Позволяет вместить бóльшее количество объектов в отведённую оперативную память. Легковес экономит память, разделяя общее состояние объектов между собой, вместо хранения одинаковых данных в каждом объекте.Пример: Фактически не используется в PHP, так как язык однопоточный и нет необходимости хранить в памяти все объекты приложения
- Заместитель
Позволяет подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.Пример: Обертка над классом получений данных (любых из любого источника), которые кешируют полученные данные и при следующем вызове, если Кеш не устарел, отдают хешированную версию