шаблоны проектирования (42)
TRANSCRIPT
ШАБЛОНЫ ПРОЕКТИРОВА
НИЯ
Шаблон проектирования или паттерн (англ. design pattern)
В разработке программного обеспечения — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
Обычно шаблон не является законченным образцом, который может быть прямо преобразован в код; это лишь пример решения задачи, который можно использовать в различных ситуациях.
Объектно-ориентированные шаблоны показывают отношения и взаимодействия между классами или объектами, без определения того, какие конечные классы или объекты приложения будут использоваться.
Шаблон проектирования
«Низкоуровневые» шаблоны, учитывающие специфику конкретного языка программирования, называются идиомами. Это хорошие решения проектирования, характерные для конкретного языка или программной платформы, и потому не универсальные.
На наивысшем уровне существуют архитектурные шаблоны, они охватывают собой архитектуру всей программной системы.
Алгоритмы по своей сути также являются шаблонами, но не проектирования, а вычисления, так как решают вычислительные задачи.
ПРЕИМУЩЕСТВАВ сравнении с полностью самостоятельным
проектированием, шаблоны обладают рядом преимуществ. Основная польза от использования шаблонов состоит в снижении сложности разработки за счёт готовых абстракций для решения целого класса проблем. Шаблон даёт решению свое имя, что облегчает коммуникацию между разработчиками, позволяя ссылаться на известные шаблоны. Таким образом, за счёт шаблонов производится унификация деталей решений: модулей, элементов проекта, — снижается количество ошибок.
Применение шаблонов концептуально сродни использованию готовых библиотек кода. Правильно сформулированный шаблон проектирования позволяет, отыскав удачное решение, пользоваться им снова и снова. Набор шаблонов помогает разработчику выбрать возможный, наиболее подходящий вариант проектирования.
ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)Название Оригинальное
название Описание Описан вDesign Patterns
Основные шаблоны (Fundamental)
Шаблон делегирования
Delegation pattern
Объект внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту.
Н/Д
Шаблон функционального дизайна
Functional design
Гарантирует, что каждый модуль компьютерной программы имеет только одну обязанность и исполняет её с минимумом побочных эффектов на другие части программы.
Н/Д
ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)
Неизменяемый интерфейс
Immutable interface
Создание неизменяемого объекта. Н/Д
Интерфейс Interface
Общий метод для структурирования компьютерных программ для того, чтобы их было проще понять.
Н/Д
Интерфейс-маркер Marker interface
В качестве атрибута (как пометки объектной сущности) применяется наличие или отсутствие реализации интерфейса-маркера. В современных языках программирования вместо этого могут применяться атрибуты или аннотации.
Н/Д
ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)
Контейнер свойств
Property Container
Позволяет добавлять дополнительные свойства для класса в контейнер (внутри класса), вместо расширения класса новыми свойствами.
Н/Д
Event Channel Event Channel
Расширяет шаблон Publish/Subscribe, создавая централизованный канал для событий. Использует объект-представитель для подписки и объект-представитель для публикации события в канале. Представитель существует отдельно от реального издателя или подписчика. Подписчик может получать опубликованные события от более чем одного объекта, даже если он зарегистрирован только на одном канале.
Н/Д
ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс инстанцирования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять инстанцируемый класс, а шаблон, порождающий объекты, делегирует инстанцирование другому объекту.
Абстрактная фабрика
Abstract factory
Класс, который представляет собой интерфейс для создания компонентов системы.
Да
Строитель Builder
Класс, который представляет собой интерфейс для создания сложного объекта.
Да
ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)
Фабричный метод
Factory method
Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать.
Да
Отложенная инициализация
Lazy initialization
Объект, инициализируемый во время первого обращения к нему.
Нет
Пул одиночек MultitonГарантирует, что класс имеет поименованные экземпляры объекта и обеспечивает глобальную точку доступа к ним.
Нет
Объектный пул Object pool
Класс, который представляет собой интерфейс для работы с набором инициализированных и готовых к использованию объектов.
Нет
Прототип PrototypeОпределяет интерфейс создания объекта через клонирование другого объекта вместо создания через конструктор.
Да
ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)
Получение ресурса есть инициализация
Resource acquisition is initialization (RAII)
Получение некоторого ресурса совмещается с инициализацией, а освобождение — с уничтожением объекта.
Нет
Одиночка SingletonКласс, который может иметь только один экземпляр.
Да
Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
ТИПЫ ШАБЛОНОВ Производящие шаблоны (Creational
patterns), предназначенные для создания объектов.
Поведенческие шаблоны (Behavioral patterns), обеспечивающие координацию функционального взаимодействия между объектами.
Структурные шаблоны (Structural patterns), используемые для управления статическими, структурными связями между объектами.
Системные шаблоны (System patterns), предназначенные для управления взаимодействием на системном уровне.
УРОВНИ Отдельный класс (single class).
Шаблон применяется к отдельному, независимому классу.
Компонент (component). Шаблон используется для создания группы классов.
Архитектурный (architectural). Шаблон используется для координации работы систем и подсистем.
Кудряшов С.Н Inc ©