Abstract Factory (Абстрактная фабрика) - предоставляет интерфейс для создания групп связанных или зависимых объектов, не указывая их конкретный класс.
Factory Method (Фабричный метод) - определяет интерфейс для создания объекта, но позволяет подклассам решать, какой класс инстанцировать. Позволяет делегировать создание объекта подклассам.
Builder (Строитель) - разделяет создание сложного объекта и инициализацию его состояния так, что одинаковый процесс построения может создать объекты с разным состоянием.
Prototype (Прототип) - определяет несколько видов объектов, чтобы при создании использовать объект-прототип и создает новые объекты, копируя прототип.
Singleton (Одиночка) - гарантирует, что класс имеет только один экземпляр и предоставляет глобальную точку доступа к нему.
Adapter (Адаптер) - конвертирует интерфейс класса в другой интерфейс, ожидаемый клиентом. Позволяет классам с разными интерфейсами работать вместе.
Proxy (Прокси) - предоставляет замену другого объекта для контроля доступа к нему.
Bridge (Мост) - разделяет абстракцию и реализацию так, чтобы они могли изменяться независимо.
Composite (Компоновщик) - компонует объекты в дреновидную структуру, представляя их в виде иерархии. Позволяет клиенту одинакового обращаться как к отдельному объекту, так и к целому поддереву.
Decorator (Декоратор) - динамически предоставляет объекту дополнительные возможности. Представляет собой гибкую альтернативу наследованию для расширения функциональности.
Facade (Фасад) - предоставляет единый интерфейс к группе интерфейсов подсистемы. Определяет высокоуровневый интерфейс, делая подсистему проще для использования.
Flyweight (Приспособленец) - благодаря совместному использованию, поддерживает эффективную работу с большим количеством объектов.
Memento (Хранитель) - не нарушая инкапсуляцию, определяет и сохраняет внутреннее состояние объекта и позволяет позже восстановить объект в этом состоянии.
Chain of responsibility (Цепочка обязанностей) - избегает связывания отправителя запроса с его получателем, давая возможность обработать запрос более чем одному объекту. Связывает объекты-получатели и передает запрос по цепочке, пока объект не обработает его.
Observer (Наблюдатель) - определяет зависимость "один ко многим" между объектами так, что когда один объект меняет свое состояние, все зависимые объекты оповещаются и обновляются автоматически.
Command (Команда) - инкапсулирует запрос в виде объекта, позволяя передавать их клиентам в качестве параметров, ставить в очередь, логировать, а также поддерживает отмену операций.
State (Состояние) - позволяет объекту менять свое поведение в зависимости от внутреннего состояния.
Interpreter (Интерпретатор) - получая формальный язык, определяет представление его грамматики и интерпретатор, использующий это представление для обработки выражений языка.
Strategy (Стратегия) - определяет группу алгоритмов, инкапсулирует их и делает взаимозаменяемыми. Позволяет изменять алгоритм независимо от клиентов, его использующих.
Iterator (Итератор) - предоставляет способ последовательного доступа к элементам множества, независимо от его внутренного устройства.
Template method (Шаблонный метод) - определяет алгоритм, некоторые этапы которого делегируются подклассам. Позволяет подклассам переопределить эти этапы, не меняя структуру алгоритма.
Mediator (Посредник) - определяет объект, инкапсулирующий способ взаимодействия объектов. Обеспечивает слабую свзяь, избавляя объекты от необходимости прямо ссылаться друг на друга и дает возможность независимо изменять их взаимодействие.
Visitor (Посетитель) - представляет собой операцию, которая будет выполнена над объектами группы классов. Дает возможность определить новую операцию без изменения кода классов, над которыми эта операция проводится.