Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Design Patterns via C#.pdf
Скачиваний:
154
Добавлен:
17.03.2016
Размер:
13.25 Mб
Скачать

19

Глава 1. Введение

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

Определение

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

Паттерны (шаблоны) проектирования – это 23 примера, которые описывают:

правильные способы формирования внутреннего состояния (полей) и поведения (методов) объекта или класса;

правильные способы создания объекта (через вызов конструктора или другим способом);

правильные способы объединения объектов в группы;

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

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

Метафора

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

Рассмотрим в качестве метафоры фигурное катание. В фигурном катании можно выделить четыре основных категории базовых элементов: шаги, спирали, вращения и прыжки.

Шаги:

Основной шаг, Шассе, Кроссролл, Подсечка, Беговой шаг, Моухог, Чоктау и др.

Спирали:

Спираль в арабеске, спираль Шарлотты, Y-спираль, Fan-спираль, Спираль-Керриган и др.

Вращения:

Вращение стоя назад, Вращение-заклон, Вращение бильман, Вращение в ласточке (либела) и др.

Прыжки:

Лутц, Тулуп, Флип, Аксель, Риттбергер, Сальхов, Сальто и др.

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

У каждого базового элемента имеется своя схема исполнения. Чтобы исполнить определенный элемент танца нужно выполнить ряд простейших действий (Разогнаться, повернуться, поднять ногу, расставить руки и пр.).

Рассмотрим в качестве примера один из базовых элементов – «Axel», который входит в категорию прыжков. На рисунке ниже показана детальная схема исполнения прыжка «Axel» и то как этот элемент разбивается на составляющие.

20

Рисунок 1. Схема исполнения прыжка «Axel»

При проектировании программных систем используется аналогичный подход. Программа строится с учетом наличия готовых подходов, которые представлены своими схемами – шаблонами (паттернами). В общем виде имеется 23 базовых шаблона проектирования программных систем, которые лежат в основе более высокоуровневых и модельно зависимых паттернов (например, паттерны проектирования корпоративных приложений, разработанные Мартином Фаулером, базируются на паттернах из каталога

GoF).

Между элементами, показанными на рисунках 2 и 3 можно провести соответствия.

Рисунок 2. Фрагмент танца составленный из двух независимых элементов (шаблонов)

Рисунок 3. Фрагмент программной системы, составленный из двух независимых элементов (шаблонов)

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

Рисунок 4. Соответствие

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]