Прототип
Prototype
Проблемы
Представим, что вам потребовалось создать каркасную модель сферы из полигонов. Обычно таких полигонов очень много и при их создании необходимо вычислять координаты. Кроме того, в методы для создания объектов требуется передавать объект класса Creator (зачем нужен?). Более простым способом создания объекта может быть его копирование из существующего.
В итоге:
Необходимость передачи объекта класса Creator в методы для создания объектов
Необходимость большого количества информации и времени для создания нового объекта
Назначение
Прототип (Prototype) — это порождающий паттерн проектирования, который поручает создание копий объектов самим копируемым объектам. Для этого в базовый класс добавляется метод для копирования, который создает новый объект на основе существующего. Паттерн вводит общий интерфейс для всех объектов, поддерживающих копирование. Это позволяет копировать объекты, не привязываясь к их классам.
Решаемые задачи
Копирование объектов
Дает возможность создавать копии объектов на основе других объектов.
Создание сложных объектов
Паттерн прототип предоставляет альтернативу созданию подклассов для конструирования сложных объектов. Вместо того, чтобы создавать множество подклассов для каждой вариации объекта, можно использовать прототипы и копирование, чтобы создавать новые объекты с нужными параметрами и состоянием.
UML диаграмма
Преимущества
Возможность создавать новые объекты, используя уже существующие объекты в качестве прототипов.
Увеличение скорости создания сложных объектов.
Нет необходимости в передаче объекта класса Creator в методы для создания объектов.
Недостатки
Необходимо убедиться в добавлении метода копирования в каждый класс, объект которого может быть скопирован.
Копируется внутреннее состояние объекта, в том числе значения приватных полей.
Связь с другими паттернами
Паттерн Строитель может использовать прототипы для создания копий подобъектов.
Last updated
Was this helpful?