Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Итог_Пособие C++.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.03 Mб
Скачать

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

Шаблоны проектирования или паттерны проектирования (design patterns) являются удачными, хорошо описанными решениями, которые могут применяться при разработке программ. Шаблоны проектирования позволяют обеспечить гибкость и возможность масштабирования программы.

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

Шаблоны проектирования описывают взаимодействие объектов и классов в программе. Не стоит путать их с архитектурными шаблонами, такими, как MVC (model-view-contoller), каналы и фильтры (pipe and filter) или многоуровневая система (layers), которые описывают высокоуровневые связи компонентов и подсистем в программе. Шаблоны проектирования не учитывают особенности конкретных языков программирования и являются универсальными решениями, описывающими общие взаимосвязи между объектами и классами системы.

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

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

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

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

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

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

6.1 Порождающие шаблоны

Порождающие шаблоны описывают различные способы создания объектов в программе при условии сохранения гибкости и независимости от конкретных типов. К порождающим шаблонам относятся: фабричный метод (factory method), абстрактная фабрика (abstract factory), строитель (builder), прототип (prototype), одиночка (singleton) и пул объектов (object pool).

Шаблон "фабричный метод" (factory method) предназначен для создания объектов. Он переносит процесс создания в специальный класс − фабрику, отвечающую за создание объектов конкретного типа. Это делает систему независимой от типа создаваемых объектов, так как имя класса не прописывается жестко в коде программы, а задается с помощью идентификатора перечислимого или строкового типа. Существует вариант фабричного метода, основанный на создании статического метода в базовом классе иерархии.

Шаблон "абстрактная фабрика" (abstract factory) предназначен для создания множества взаимосвязанных объектов. Примером таких объектов могут быть элементы графического интерфейса для различных операционных систем или библиотек графического интерфейса: кнопка − button, надпись − label, текстовое поле − text field и так далее. Абстрактная фабрика позволяет отделить процесс создания элементов управления для конкретной системы от их непосредственного использования.

Шаблон "строитель" (builder) применяется для конструирования сложного объекта. Известна последовательность действий для создания объекта, при этом конкретный строитель может определять содержание этих действий. Данный шаблон позволяет при создании объекта абстрагироваться от его внутренней структуры.

Шаблон "прототип" (prototype) позволяет создавать различные объекты путем их клонирования из эталонного объекта − прототипа. Данный шаблон схож с шаблоном "фабричный метод", однако он предполагает хранение дополнительных экземпляров объектов, которые будут клонироваться.

Шаблон "одиночка" (singleton) отвечает за создание единственного экземпляра некоторого класса и обеспечение централизованного доступа к нему. Данный шаблон позволяет избежать создания глобального объекта класса.

Шаблон "пул объектов" (object pool) позволяет оптимизировать процесс создания объектов за счет хранения отработавших экземпляров и повторного их использования. Создание объектов происходит через запрос к пулу объектов. Если в пуле есть неиспользуемый объект, он будет передан для работы. Если пул пустой, будет создан новый объект. Вместо уничтожения объекты возвращаются в пул. Данный шаблон может быть полезен при работе с объектами, процесс создания которых занимает длительное время. Помимо создания объектов, данный шаблон позволяет контролировать их максимальное количество и проверять наличие невозвращенных объектов в момент завершения программы.

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