МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра автоматизированных систем управления
ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ ПРОГРАММНЫХ СИСТЕМ
МЕТОДИЧЕСКИЕ УКАЗАНИЯ к проведению лабораторных работ по курсу
«Архитектура программных систем»
В.А. Алексеев
Липецк Липецкий государственный технический университет
2016
3160
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра автоматизированных систем управления
ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ ПРОГРАММНЫХ СИСТЕМ
МЕТОДИЧЕСКИЕ УКАЗАНИЯ к проведению лабораторных работ по курсу
«Архитектура программных систем»
В.А. Алексеев
Липецк Липецкий государственный технический университет
2016
УДК 681.3.068 (004.415.2)
А471
Рецензент – канд. техн. наук О.А. Назаркин
Алексеев, В.А.
A471 Паттерны проектирования программных систем [Текст]: метод. указ. к
проведению лабораторных работ по курсу «Архитектура программных систем» / В.А. Алексеев. – Липецк: Издательство Липецкого государственного технического университета, 2016. – 33 с.
В методических указаниях рассматриваются паттерны проектирования программных систем: поведенческие, структурные, порождающие. Приведены задания к трем лабораторным работам.
Предназначены для студентов направлений подготовки бакалавриата
«Информатика и вычислительная техника», «Программная инженерия», «Математическое обеспечение и администрирование информационных систем».
Могут быть использованы при изучении аналогичных дисциплин студентами других направлений бакалавриата.
Библиогр.: 4 назв.
© ФГБОУ ВО «Липецкий государственный технический университет», 2016
2
Лабораторная работа № 1
Использование порождающих шаблонов проектирования
Цель работы
Изучить шаблоны проектирования, относящиеся к классу порождающих,
освоить применение шаблонов этого класса при разработке программных систем с применением объектно-ориентированных языков программирования.
Теоретические сведения
Порождающие шаблоны (creational patterns) – шаблоны проектирования,
которые абстрагируют процесс наследования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов.
Шаблон, порождающий классы, использует наследование, чтобы изменять наследуемый класс, а шаблон, порождающий объекты, делегирует наследование другому объекту.
Эти шаблоны оказываются важны, когда система больше зависит от композиции объектов, чем от наследования классов. Получается так, что основной упор делается не на жестком кодировании фиксированного набора поведений, а на определении небольшого набора фундаментальных поведений,
с помощью композиции которых можно получать любое число более сложных.
Таким образом, для создания объектов с конкретным поведением требуется нечто большее, чем простое инстанцирование класса.
Порождающие шаблоны инкапсулируют знания о конкретных классах,
которые применяются в системе. Они скрывают детали того, как эти классы создаются и стыкуются. Единственная информация об объектах, известная системе, – это их интерфейсы, определенные с помощью абстрактных классов.
Следовательно, порождающие шаблоны обеспечивают большую гибкость при решении вопроса о том, что создается, кто это создает, как и когда. Можно собрать систему из «готовых» объектов с самой различной структурой и
3
функциональностью статически (на этапе компиляции) или динамически (во время выполнения).
Иногда допустимо выбирать между тем или иным порождающим шаблоном. Например, есть случаи, когда с пользой для дела можно использовать как прототип, так и абстрактную фабрику. В других ситуациях порождающие шаблоны дополняют друг друга. Так, применяя строитель,
можно использовать другие шаблоны для решения вопроса о том, какие компоненты нужно строить, а прототип часто реализуется вместе с одиночкой.
Порождающие шаблоны тесно связаны друг с другом, их рассмотрение лучше проводить совместно, чтобы лучше были видны их сходства и различия.
К порождающим шаблонам относятся:
абстрактная фабрика (abstract factory);
строитель (builder);
фабричный метод (factory method);
отложенная (ленивая) инициализация (lazy initialization);
пул одиночек (multiton);
объектный пул (object pool);
прототип (prototype);
инициализация при получении ресурса (resource acquisition is initialization
– RAII);
одиночка (singleton).
Задание
Реализовать программу для решения задачи согласно варианту с
использованием требуемого порождающего шаблона проектирования.
Содержание отчета
1.Титульный лист.
2.Цель работы, задание, вариант.
4