Название |
Оригинальное название |
Описание |
Описан в Design Patterns |
Основные шаблоны |
Шаблон делегирования |
Delegation pattern |
Объект внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту |
Н/Д |
Шаблон функционального дизайна |
Functional design |
Гарантирует, что каждый модуль компьютерной программы имеет только одну обязанность и исполняет её с минимумом побочных эффектов на другие части программы |
Н/Д |
Неизменяемый объект |
Immutable |
Объект, который не может быть изменён после своего создания |
Н/Д |
Интерфейс |
Interface |
Общий метод для структурирования компьютерных программ для того, чтобы их было проще понять |
Н/Д |
Marker interface |
Marker interface |
|
Н/Д |
Property Container |
Property Container |
Функция данного шаблона - обеспечить динамическую расширяемость уже готового приложения. |
Н/Д |
Event Channel |
Event Channel |
|
Н/Д |
Порождающие шаблоны — шаблоны проектирования, которые абстрагируют процесс инстанцирования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять инстанцируемый класс, а шаблон, порождающий объекты, делегирует инстанцирование другому объекту. |
Абстрактная фабрика |
Abstract factory |
Класс, который представляет собой интерфейс для создания компонентов системы. |
Да |
Строитель |
Builder |
Класс, который представляет собой интерфейс для создания сложного объекта |
Да |
Фабричный метод |
Factory method |
Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанциировать |
Да |
Отложенная инициализация |
Lazy initialization |
Объект, инициализируемый во время первого обращения к нему |
Нет |
Пул одиночек |
Multiton |
Гарантирует, что класс имеет поименованные экземпляры объекта и обеспечивает глобальную точку доступа к ним |
Нет |
Объектный пул |
Object pool |
Класс, который представляет собой интерфейс для работы с набором инициализированных и готовых к использованию объектов |
Нет |
Прототип |
Prototype |
Определяет интерфейс создания объекта через клонирование другого объекта вместо создания через конструктор |
Да |
Получение ресурса есть инициализация |
Resource acquisition is initialization |
Получение некоторого ресурса совмещается с инициализацией, а освобождение — с уничтожением объекта |
Нет |
Одиночка |
Singleton |
Класс, который может иметь только один экземпляр. |
Да |
Структурные шаблоны определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу. |
Адаптер |
Adapter / Wrapper |
Объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другой предоставляет несовместимый с первым интерфейс |
Да |
Мост |
Bridge |
Структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо |
Да |
Компоновщик |
Composite |
Объект, который объединяет в себе объекты, подобные ему самому |
Да |
Декоратор или Wrapper/Обёртка |
Decorator |
Класс, расширяющий функциональность другого класса, без использования наследования |
Да |
Фасад |
Facade |
Объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое |
Да |
Единая точка входа |
Front Controller |
Обеспечивает унифицированный интерфейс для интерфейсов в подсистеме. Front Controller определяет высокоуровневый интерфейс, упрощающий использование подсистемы |
Нет |
Приспособленец |
Flyweight |
Это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым |
Да |
Заместитель |
Proxy |
Объект, который является посредником между двумя другими объектами, и который реализовывает/ограничивает доступ к объекту, к которому обращаются через него |
Да |
Поведенческие шаблоны определяют взаимодействие между объектами, увеличивая таким образом его гибкость. |
Цепочка ответственности |
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 |
Предоставляет способ обхода всех вершин иерархической структуры данных |
Нет |
Используются для более эффективного написания многопоточных программ, и предоставляет готовые решения проблем синхронизации.
Название |
Оригинальное название |
Описание |
Active Object |
Active object |
Служит для отделения потока выполнения метода от потока, в котором он был вызван. Использует шаблоны асинхронный вызов методов и планировщик |
Balking |
Balking |
Служит для выполнения действия над объектом только тогда, когда тот находится в корректном состоянии |
|
Binding Properties |
Комбинирует несколько наблюдателей для обеспечения синхронизации свойств в различных объектах |
|
Messaging design pattern |
Позволяет компонентам и приложениям обмениваться информацией |
Блокировка с двойной проверкой |
Double-checked locking |
Предназначен для уменьшения накладных расходов, связанных с получением блокировки |
|
Event-based asynchronous |
Addresses problems with the Asynchronous pattern that occur in multithreaded programs. |
Guarded suspension |
Guarded suspension |
Используется для блокировки выполнения действия над объектом только тогда, когда тот находится в корректном состоянии |
Half-Sync/Half-Async |
|
|
Leaders/followers |
|
|
|
Lock |
Один поток блокирует ресурс для предотвращения доступа или изменения его другими потоками |
Monitor Object |
Monitor object |
Объект, предназначенный для безопасного использования более чем одним потоком |
Reactor |
Reactor |
Предназначен для синхронной передачи запросов сервису от одного или нескольких источников |
Read write lock |
Read-write lock |
Позволяет нескольким потокам одновременно считывать информацию из общего хранилища, но позволяя только одному потоку в момент времени изменять её |
Планировщик |
Scheduler |
Обеспечивает механизм реализации политики планирования, но при этом не зависящих ни от одной конкретной политики |
Thread pool |
Thread pool |
Предоставляет пул потоков для обработки заданий, представленных обычно в виде очереди |
Thread-Specific Storage |
Thread-specific storage |
Служит для предоставления различных глобальных переменных для разных потоков |
Однопоточное выполнение |
Single Thread Execution |
Препятствует конкурентному вызову метода, тем самым запрещая параллельное выполнение этого метода |
Кооперативный паттерн |
Cooperative pattern |
|