Вы находитесь на странице: 1из 7

Министерство Образования Республики Молдова

Технический Университет Молдовы

Кафедра Автоматики и Информационных Технологий

Лабораторная работа № 4
по дисциплине: «IPP»
Тема: «Поведенческие шаблоны проектирования»

Выполнил студент гр. \

Проверил преподаватель: \

Кишинёв 2013
Цель работы
Изучение пяти поведенческих шаблонов проектирования. Создание приложения, которое
будет работать по данным шаблонам. Создать диаграммы классов.
Выполнение работы
Для данной лабораторной работы были выбраны данные шаблоны:
 Итератор (Iterator);
 Стратегия (Strategy);
 Шаблонный метод (Template methodшаблонный метод);
 Хранитель (Memento);
 Посетитель (Visitor);
Данные шаблоны являются одними из самых известных среди порождающих шаблонов.
Некоторые из них имеют простую реализацию.

Шаблон «Итератор»
Представляет собой объект, позволяющий получить последовательный доступ к элементам
объекта-агрегата без использования описаний каждого из объектов, входящий в состав
агрегации.

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

Перебор элементов выполняется объектом итератора, а не самой коллекцией. Это упрощает


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

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


итератор, может ничего не знать о типе итерируемого агрегата.

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


помощью данного шаблона проектирования.

2
Рисунок 1 – Шаблон «Итератор»

Шаблон «Стратегия»
Поведенческий шаблон проектирования, предназначенный для определения семейства
алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет
выбирать алгоритм путем определения соответствующего класса. Шаблон Strategy позволяет
менять выбранный алгоритм независимо от объектов-клиентов, которые его используют.
Отделение процедуры выбора алгоритма от его реализации. Это позволяет сделать выбор
на основании контекста.
Вначале создаём контекст и инициализируем его первой стратегией. Затем выполняем
операцию контекста, которая использует первую стратегию. Далее заменяем в контексте первую
стратегию второй. Выполняем операцию контекста, которая теперь использует вторую
стратегию.

3
Рисунок 2 – Шаблон «Стратегия»

Шаблон «Шаблонный метод»


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

Применимость:

 Однократное использование инвариантной части алгоритма, с оставлением


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

Рассмотрим диаграмму шаблона «Шаблонный метод» (Рисунок 3). Данный шаблонный класс
схож на интерфейс. И представляет собой объект файла, наследуется два файла разных классов.

4
Рисунок 3 – Шаблон «Шаблонный метод»

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

Существует два возможных варианта реализации данного шаблона: классический, описанный


в книге Design Patterns, и реже встречаемый нестандартный вариант.

Вначале мы создали необходимое нам состояние, затем сохранили его. Затем изменили его
статус. А далее восстановили прежнее состояние.

Рисунок 4 – Шаблон «Хранитель»

5
Шаблон «Посетитель»
Поведенческий шаблон проектирования, описывающий операцию, которая выполняется
над объектами других классов. При изменении Visitor нет необходимости изменять
обслуживаемые классы.
Если есть вероятность изменения иерархии обслуживаемого класса, либо она будет
нестабильной или открытый интерфейс достаточно эффективен для доступа шаблона, то его
использование будет вредоносным. Создается базовый класс Visitor с методами visit() для
каждого подкласса родительского Element. Добавьте метод accept(visitor) в иерархию Element.
Для каждой операции, которая должна выполняться для объектов Element, создайте производный
от Visitor класс. Реализации метода visit() должны использовать открытый интерфейс класса
Element. В результате: клиенты создают объекты Visitor и передают их каждому объекту Element,
вызывая accept().
По данному шаблону были созданые отдельный класс Девайсов и классы посетителей,
которые посещая предыдущие классы распечатывает их.

Рисунок 5 – Шаблон «Посетитель»

6
Вывод
В данной лабораторной работе были изучены поведенческие шаблоны проектирования,
такие как:

 Итератор (Iterator);
 Стратегия (Strategy);
 Шаблонный метод (Template methodшаблонный метод);
 Хранитель (Memento);
 Посетитель (Visitor);

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