<tdstyle="width: 500px; padding: 18px;">🔎 Избегает связывание отправителя запроса сего получателем, давая возможность обработать запрос более чем одному объекту.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Инкапсулирует запрос в виде объекта позволяя передавать их клиентам в качестве параметров, ставить в очередь, логировать, а также поддерживать отмену операций.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Получая формальный язык, определяет представление его грамматики и интерпретатор, использующий это представление для обработки выражений языка.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Определяет объект инкапсулирующий способ взаимодействия объектов. Обеспечивает слабую связь, избавляя их от необходимости ссылаться друг на друга и даёт возможность независимо изменять их взаимодействие.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Не нарушая инкапсуляцию, определяет и сохраняет внутреннее состояние объекта и позволяет позже восстановить объект в этом состоянии.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Определяет зависимость один ко многим между объектами так, что когда один меняет своё состояние, все зависимые объекты оповещаются и обновляются автоматически.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Определяет группу алгоритмов, инкапсулирует их и делает взаимозаменяемыми. Позволяет изменять алгоритм независимо от клиентов, его использующих.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Определяет алгоритм, некоторые этапы которого делегируются подклассам. Позволяет подклассам переопределить эти этапы, не меняя структуру алгоритма.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Представляет собой операцию, которая будет выполнена над объектами группы классов. Даёт возможность определить новую операцию без изменения кода классов, над которыми эта операция производитcя.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Предоставляет интерфейс для создания групп связанных или зависимых объектов, не указывая их конкретный класс.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Разделяет создание сложного объекта и его инициализацию так, что одинаковый процесс построения может может создавать объекты с разным состоянием.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Определяет интерфейс для создания объекта, но позволяет подклассам решать, какой класс создавать. Позволяет делегировать создание класса объектам класса.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Позволяет упростить процесс создания сложных объектов с помощью методов-цепочек, которые наделяют объект каким-то определенным качеством.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Определяет несколько видов объектов, чтобы при создании использовать объект-прототип и создаёт новые объекты, копируя прототип (техника клонирования объектов).</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Конвенртирует интерфейс класса в другой интерфейс, ожидаемый клиентом. Позволяет классам с разными интерфейсами работать вместе.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Компонует объекты в древовидную структуру по принципу "часть-целое", представляя их в виде иерархии. Позволяет клиенту одинаково обращаться как к отдельному, так и к целому поддереву.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Динамически предоставляет объекту дополнительные возможности. Представляет собой гибкую альтернативу наследованию для расширения функциональности.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Предоставляет единый интерфейс к группе интерфейсов подсистемы. Определяет высокоуровневый интерфейс, делая систему проще для использования.</td>
<tdstyle="width: 500px; padding: 18px;">🔎 Благодаря совместному использованию, поддерживает эффективную работу с большим количеством объектов. (для оптимизации работы с памятью)</td>