Skip to content

Latest commit

 

History

History
116 lines (95 loc) · 11.5 KB

Pattern.md

File metadata and controls

116 lines (95 loc) · 11.5 KB

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

Общее

  • Повторяемая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
  • Наиболее известны 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)


Поведенческие шаблоны (Behavioral)


Ссылки




Legmo, 2019-2023