шаблоны проектирования (42)

13
ШАБЛОНЫ ПРОЕКТИРОВАНИЯ

Upload: romachkapole

Post on 12-Jan-2017

214 views

Category:

Investor Relations


0 download

TRANSCRIPT

Page 1: шаблоны проектирования (42)

ШАБЛОНЫ ПРОЕКТИРОВА

НИЯ

Page 2: шаблоны проектирования (42)

Шаблон проектирования или паттерн (англ. design pattern)

В разработке программного обеспечения — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.

Обычно шаблон не является законченным образцом, который может быть прямо преобразован в код; это лишь пример решения задачи, который можно использовать в различных ситуациях. 

Объектно-ориентированные шаблоны показывают отношения и взаимодействия между классами или объектами, без определения того, какие конечные классы или объекты приложения будут использоваться.

Page 3: шаблоны проектирования (42)

Шаблон проектирования

«Низкоуровневые» шаблоны, учитывающие специфику конкретного языка программирования, называются идиомами. Это хорошие решения проектирования, характерные для конкретного языка или программной платформы, и потому не универсальные.

На наивысшем уровне существуют архитектурные шаблоны, они охватывают собой архитектуру всей программной системы.

Алгоритмы по своей сути также являются шаблонами, но не проектирования, а вычисления, так как решают вычислительные задачи.

Page 4: шаблоны проектирования (42)

ПРЕИМУЩЕСТВАВ сравнении с полностью самостоятельным

проектированием, шаблоны обладают рядом преимуществ. Основная польза от использования шаблонов состоит в снижении сложности разработки за счёт готовых абстракций для решения целого класса проблем. Шаблон даёт решению свое имя, что облегчает коммуникацию между разработчиками, позволяя ссылаться на известные шаблоны. Таким образом, за счёт шаблонов производится унификация деталей решений: модулей, элементов проекта, — снижается количество ошибок.

Применение шаблонов концептуально сродни использованию готовых библиотек кода. Правильно сформулированный шаблон проектирования позволяет, отыскав удачное решение, пользоваться им снова и снова. Набор шаблонов помогает разработчику выбрать возможный, наиболее подходящий вариант проектирования.

Page 5: шаблоны проектирования (42)

ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)Название Оригинальное

название Описание Описан вDesign Patterns

Основные шаблоны (Fundamental)

Шаблон делегирования

Delegation pattern

Объект внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту.

Н/Д

Шаблон функционального дизайна

Functional design

Гарантирует, что каждый модуль компьютерной программы имеет только одну обязанность и исполняет её с минимумом побочных эффектов на другие части программы.

Н/Д

Page 6: шаблоны проектирования (42)

ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)

Неизменяемый интерфейс

Immutable interface

Создание неизменяемого объекта. Н/Д

Интерфейс Interface

Общий метод для структурирования компьютерных программ для того, чтобы их было проще понять.

Н/Д

Интерфейс-маркер Marker interface

В качестве атрибута (как пометки объектной сущности) применяется наличие или отсутствие реализации интерфейса-маркера. В современных языках программирования вместо этого могут применяться атрибуты или аннотации.

Н/Д

Page 7: шаблоны проектирования (42)

ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)

Контейнер свойств

Property Container

Позволяет добавлять дополнительные свойства для класса в контейнер (внутри класса), вместо расширения класса новыми свойствами.

Н/Д

Event Channel Event Channel

Расширяет шаблон Publish/Subscribe, создавая централизованный канал для событий. Использует объект-представитель для подписки и объект-представитель для публикации события в канале. Представитель существует отдельно от реального издателя или подписчика. Подписчик может получать опубликованные события от более чем одного объекта, даже если он зарегистрирован только на одном канале.

Н/Д

Page 8: шаблоны проектирования (42)

ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс инстанцирования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять инстанцируемый класс, а шаблон, порождающий объекты, делегирует инстанцирование другому объекту.

Абстрактная фабрика

Abstract factory

Класс, который представляет собой интерфейс для создания компонентов системы.

Да

Строитель Builder

Класс, который представляет собой интерфейс для создания сложного объекта.

Да

Page 9: шаблоны проектирования (42)

ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)

Фабричный метод

Factory method

Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать.

Да

Отложенная инициализация

Lazy initialization

Объект, инициализируемый во время первого обращения к нему.

Нет

Пул одиночек MultitonГарантирует, что класс имеет поименованные экземпляры объекта и обеспечивает глобальную точку доступа к ним.

Нет

Объектный пул Object pool

Класс, который представляет собой интерфейс для работы с набором инициализированных и готовых к использованию объектов.

Нет

Прототип PrototypeОпределяет интерфейс создания объекта через клонирование другого объекта вместо создания через конструктор.

Да

Page 10: шаблоны проектирования (42)

ТИПЫ ШАБЛОНОВ ПРОЕКТИРОВАНИЯ (ОСНОВНЫЕ)

Получение ресурса есть инициализация

Resource acquisition is initialization (RAII)

Получение некоторого ресурса совмещается с инициализацией, а освобождение — с уничтожением объекта.

Нет

Одиночка SingletonКласс, который может иметь только один экземпляр.

Да

Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.

Page 11: шаблоны проектирования (42)

ТИПЫ ШАБЛОНОВ Производящие шаблоны (Creational

patterns), предназначенные для создания объектов.

Поведенческие шаблоны (Behavioral patterns), обеспечивающие координацию функционального взаимодействия между объектами.

Структурные шаблоны (Structural patterns), используемые для управления статическими, структурными связями между объектами.

Системные шаблоны (System patterns), предназначенные для управления взаимодействием на системном уровне.

Page 12: шаблоны проектирования (42)

УРОВНИ Отдельный класс (single class).

Шаблон применяется к отдельному, независимому классу.

Компонент (component). Шаблон используется для создания группы классов.

Архитектурный (architectural). Шаблон используется для координации работы систем и подсистем.

Page 13: шаблоны проектирования (42)

Кудряшов С.Н Inc ©