Название | Оригинальное название | Описание | Описан в Design Patterns |
Основные шаблоны (Fundamental) |
Шаблон делегирования | Delegation pattern | Объект внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту | Н/Д |
Шаблон функционального дизайна | Functional design | Гарантирует, что каждый модуль компьютерной программы имеет только одну обязанность и исполняет её с минимумом побочных эффектов на другие части программы | Н/Д |
Неизменяемый объект | Immutable | Объект, который не может быть изменён после своего создания | Н/Д |
Интерфейс | Interface | Общий метод для структурирования компьютерных программ для того, чтобы их было проще понять | Н/Д |
Marker interface | Marker interface | | Н/Д |
Property Container | Property Container | | Н/Д |
Event Channel | Event Channel | | Н/Д |
Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс инстанцирования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять инстанцируемый класс, а шаблон, порождающий объекты, делегирует инстанцирование другому объекту. |
Абстрактная фабрика | Abstract factory | Класс, который представляет собой интерфейс для создания компонентов системы. | Да |
Строитель | Builder | Класс, который представляет собой интерфейс для создания сложного объекта | Да |
Фабричный метод | Factory method | Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанциировать | Да |
Отложенная инициализация | Lazy initialization | Объект, инициализируемый во время первого обращения к нему | Нет |
Пул одиночек | Multiton | Гарантирует, что класс имеет поименованные экземпляры объекта и обеспечивает глобальную точку доступа к ним | Нет |
Объектный пул | Object pool | Класс, который представляет собой интерфейс для работы с набором инициализированных и готовых к использованию объектов | Нет |
Прототип | Prototype | Определяет интерфейс создания объекта через клонирование другого объекта вместо создания через конструктор | Да |
Получение ресурса есть инициализация | Resource acquisition is initialization (RAII) | Получение некоторого ресурса совмещается с инициализацией, а освобождение — с уничтожением объекта | Нет |
Одиночка | Singleton | Класс, который может иметь только один экземпляр. | Да |
Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу. |
Адаптер | Adapter / Wrapper | Объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другой предоставляет несовместимый с первым интерфейс | Да |
Мост | Bridge | Структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо | Да |
Компоновщик | Composite | Объект, который объединяет в себе объекты, подобные ему самому | Да |
Декоратор или Wrapper/Обёртка | Decorator | Класс, расширяющий функционал другого класса, без использования наследования | Да |
Фасад | Facade | Объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое | Да |
Единая точка входа | Front Controller | Обеспечивает унифицированный интерфейс для интерфейсов в подсистеме. Front Controller определяет высокоуровневый интерфейс, упрощающий использование подсистемы | Нет |
Приспособленец | Flyweight | Это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым | Да |
Заместитель | Proxy | Объект, который является посредником между двумя другими объектами, и который реализовывает/ограничивает доступ к объекту, к которому обращаются через него | Да |
Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость. |
Цепочка ответственности | Chain of responsibility | Предназначен для организации в системе уровней ответственности | Да |
Команда, Action, Transaction | Command | Представляет действие. Объект команды заключает в себе само действие и его параметры | Да |
Интерпретатор | Interpreter | Решает часто встречающуюся, но подверженную изменениям, задачу | Да |
Итератор, Cursor | Iterator | Представляет собой объект, позволяющий получить последовательный доступ к элементам объекта-агрегата без использования описаний каждого из объектов, входящий в состав агрегации | Да |
Посредник | Mediator | Обеспечивает взаимодействие множества объектов, формируя при этом слабую связанность и избавляя объекты от необходимости явно ссылаться друг на друга | Да |
Хранитель, Token | Memento | Позволяет не нарушая инкапсуляцию зафиксировать и сохранить внутреннее состояния объекта так, чтобы позднее восстановить его в этом состоянии | Да |
| Null object | Предотвращает нулевые указатели, предоставляя объект «по умолчанию» | Нет |
Наблюдатель, Dependents, Publish-Subscribe, Listener | Observer или Publish/subscribe | Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом событии | Да |
Слуга | Servant | Используется для обеспечения общей функциональности группе классов | Нет |
| Specification | Служит для связывания биснес-логики | Нет |
Состояние, Objects for States | State | Используется в тех случаях, когда во время выполнения программы объект должен менять свое поведение в зависимости от своего состояния | Да |
Стратегия | Strategy | Предназначен для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости | Да |
Шаблонный метод | Template method | Определяюет основу алгоритма и позволяет наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом. | Да |
Посетитель | Visitor | Описывает операцию, которая выполняется над объектами других классов. При изменении класса Visitor нет необходимости изменять обслуживаемые классы. | Да |
Simple Policy | | | Нет |
Event listener | | | Нет |
Single-serving visitor | Single-serving visitor | Оптимизирует реализацию шаблона посетитель, который инициализируется, единожды используется, и затем удаляется | Нет |
Hierarchical visitor | Hierarchical visitor | Предоставляет способ обхода всех вершин иерархической структуры данных (напр. древовидной) | Нет |