Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Паттерны (3).pptx
Скачиваний:
25
Добавлен:
22.03.2023
Размер:
5.4 Mб
Скачать

Паттерн Singleton

Результаты

Допускает переменное число экземпляров. Паттерн позволяет вам легко изменить свое решение и разрешить появление более одного экземпляра класса Singleton.

Большая гибкость, чем у операций класса. Еще один способ реализовать функциональность одиночки - использовать операции класса, то есть статические функции-члены в C++ и методы класса в Smalltalk. Но оба этих приема препятствуют изменению дизайна, если потребуется разрешить наличие нескольких экземпляров класса. Кроме того, статические функции-члены в C++ не могут быть виртуальными, так что их нельзя полиморфно заместить в подклассах.

11

Singleton – преимущества и недостатки

Преимущества

Гарантирует наличие единственного экземпляра класса.

Предоставляет к нему глобальную точку доступа.

Реализует отложенную инициализацию объекта- одиночки.

Недостатки

Нарушает принцип единственной ответственности класса.

Маскирует плохой дизайн.

Проблемы

мультипоточности.

Требует постоянного создания Mock-объектов при юнит-тестировании.

ПАТТЕРН PROTOTYPE

Prototype

Название и классификация паттерна

Прототип - паттерн, порождающий объекты.

Назначение

Задает виды создаваемых объектов с помощью экземпляра-прототипа и создает новые объекты путем копирования этого прототипа.

14

Prototype - проблема

Prototype – решение

Prototype – структура

Базовая реализация

Реализация с общим

хранилищем прототипов

 

Prototype - участники

Prototype (Graphic) - прототип:

- объявляет интерфейс для клонирования самого себя;

ConcretePrototype ( Staff - нотный стан, WholeNote - целая нота, Half Note - половинная нота) - конкретный прототип:

- реализует операцию клонирования себя;

Client (GraphicTool) - клиент:

- создает новый объект, обращаясь к прототипу с запросом клонировать себя.

18

Prototype – преимущества и недостатки

Преимущества

Позволяет клонировать объекты, не привязываясь к их конкретным классам.

Меньше повторяющегося кода инициализации объектов.

Ускоряет создание объектов.

Альтернатива созданию подклассов для конструирования сложных объектов.

Недостатки

Сложно клонировать составные объекты, имеющие ссылки на другие объекты.

ПАТТЕРН FACTORY METHOD

Соседние файлы в папке Лекции