❓ Расскажите о паттерне Prototype
Prototype — это порождающий паттерн, который позволяет копировать объекты, не вдаваясь в подробности их реализации.
Простыми словами: вместо создания объекта с нуля через конструктор, вы клонируете уже существующий экземпляр.
▪️ Когда использовать
— Создание объекта затратно (сложная инициализация, обращение к БД, парсинг файлов)
— Нужно избежать привязки к конкретным классам при создании копий
— Объекты различаются только состоянием, а не поведением
▪️ Важно: Shallow vs Deep Copy
Shallow copy — копируются только примитивы, ссылки на объекты остаются теми же
Deep copy — создаются копии вложенных объектов
▪️ Альтернативы clone
— Магический __clone()
— Статический метод: Report::copy($original)
— Сериализация: unserialize(serialize($obj))
▪️ Минус
Клонирование объектов с циклическими ссылками может быть сложным.
Post #1267
1.01K
- 🔥 2
- ❤ 1
- 👍 1