Skip to content

Latest commit

 

History

History
47 lines (45 loc) · 7.09 KB

Pattern.md

File metadata and controls

47 lines (45 loc) · 7.09 KB

Паттерны проектирования

Паттерны проектирования - это готовые эффективные шаблоны решения задач, которые часто встречаются в практике программиста.


Группы шаблонов проектирования:

  • Порождающие (Creational)
  • Структурные (Structural)
  • Поведенческие (Behavioral)

Порождающие

Название Name Описание
Абстрактная фабрика Abstract Factory позволяет создавать семейства взаимосвязанных или взаимозависимых объектов, без указания их конкретных классов
Строитель Builder интерфейс для пошагового создания сложных объектов
Фабричный метод Factory Method общий интерфейс для создания объектов в суперклассе, позволяющий подклассам определять тип создаваемого объекта
Объектный пул Object Pool позволяет использовать уже созданный объект вместо создания нового, в ситуации, когда создание нового объекта требует большого количества ресурсов
Прототип Prototype позволяет копировать объекты без необходимости учитывать особенности их реализации
Одиночка Singleton гарантирует, что у класса есть только один экземпляр и предоставляет глобальную точку доступа к нему
Отложенная инициализация Lazy initialization создание объекта, непосредственно перед его использованием
Мультитон Multiton шаблон позволяющий создавать несколько одиночек (Singleton), доступ и управление которыми производится через ассоциативную таблицу, например словарь

Структурные

Название Name Описание
Адаптер Adapter создание объекта-посредника, который позволит взаимодействовать двум несовместимым объектам
Мост Bridge разделяет класс на отдельные части: внешнюю абстракцию и внутреннюю реализацию
Компоновщик Composite идея состоит в том, что группа объектов (контейнер) и сам объект (содержимое контейнера) обладают тем же набором свойств, что позволяет работать с группой как с целым объектом
Декоратор Decorator добавляет, убирает или изменяет поведение декорированного объекта
Фасад Facade обертка сложной системы, модуля, пакета в простой интерфейс
Приспособленец Flyweight использование совместных ресурсов для похожих объектов, вместо выделения ресурсов для каждого объекта по отдельности
Прокси Proxy создание объекта-подложки для реального объекта, чтобы контролировать обращения к нему, изменять или перенаправлять их

Поведенческие

Название Name Описание
Цепочка обязанностей Chain of responsibility последовательная передача запросов по списку объектов, которые эти запросы обрабатывают и/или передают дальше по цепочке
Итератор Iterator позволяет последовательно получать объекты из контейнера, не раскрывая особенности реализации контейнера
Команда Command добавляет слой абстракции между действием и объектом, который это действие вызывает, например, кнопка и действие, которое выполняется при нажатии на эту кнопку
Посредник Mediator создание такой структуры, в которой объекты не общаются друг с другом, а используют для этого объект-посредник
Хранитель Memento сохраняет состояние объекта на определенный момент для того, чтобы при необходимости к нему можно было вернуться
Null Object Null Object объект который может использоваться в случае отсутствия нужного объекта или объект по умолчанию
Наблюдатель Observer объект "наблюдающий" за состоянием других объектов, информирующий систему / пользователя про изменения состояния наблюдаемого объекта
Состояние State позволяет изменять поведение объекта в зависимости от его состояния
Стратегия Strategy позволяет объединить несколько алгоритмов в группу, порядок применения алгоритмов может изменяться, благодаря чему достигается гибкость всей системы
Шаблонный метод Template method создание базовых методов и алгоритма их применения в абстрактном родительском классе для того, чтобы определить конкретные методы в дочерних классах
Посетитель Visitor шаблон, позволяющий выполнять операции над другими объектами, без необходимости изменять эти объекты