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