Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция по ТРПО последняя.docx
Скачиваний:
46
Добавлен:
27.09.2019
Размер:
174.48 Кб
Скачать

Типы шаблонов проектирования

  1. Основные шаблоны:

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

  • Неизменяемый объект – объект, который не может быть изменен после своего создания.

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

  1. Порождающие шаблоны – позволяют сделать систему независимой от способа создания, композиции и представления объекта.

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

  • Строитель – класс, который представляет собой интерфейс для создания сложных объектов.

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

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

  • Адаптер – объект, обеспечивающий взаимодействие двух других объектов, один из которых используют, а другой предоставляет не совместимый с первым интерфейс.

  • Мост – структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса.

  • Декоратор – класс, расширяющий функционал другого класса без использования наследования.

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

  • Команда – представляет действие, объект команды заключает в себе само действие и его параметры.

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

  • Посетитель – описывает операцию, которая выполняется над объектами других классов, при изменении класса посетитель нет необходимости изменять обслуживаемые классы.

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

Достоинства

  1. Контролируемый доступ к единственному экземпляру

  2. Уменьшение числа имен

  3. Допускает уточнение операций и представления

  4. Допускает переменное число экземпляров

  5. Большая гибкость, чем у операций классов

Недостатки

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

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

Возможная реализация на С++ известная как симболтон майерса, где одиночка представляет собой статический локальный объект. Важным моментом является то, что конструктор класса объявлен как private, что позволяет предотвратить создание экземпляров класса за пределами его реализации. Приведенный ниже пример потока не безопасен. Для работы с классом из нескольких потоков нужно защищать переменную the single от одновременного доступа например с помощью мьютекса или критической секции.

Class onlyone

{public;

Static OnlyOne*instance()

If (TheSingleInstance=0)

TheSingleInstance=new OnlyOne;

Return TheSingleInstance;

Private

Static OnlyOne*TheSingleInstance;

OnlyOne(){};

};

OnlyOne*OnlyOne::TheSingleInstance=0;