intermediate
Prototype
Создавайте новые objects клонированием configured exemplar, когда setup expensive или concrete classes должны оставаться hidden.
Prototype создаёт объекты клонированием существующего образца вместо дорогой инициализации или раскрытия concrete classes. Подходит при тяжёлой конфигурации, скрытых подклассах или множестве почти одинаковых экземпляров — шаблоны документов, игровые сущности.
На интервью: связь с `structuredClone`, copy constructors и immutable snapshots. Deep vs shallow copy.
Типовые ошибки: shallow clone с общим mutable nested state; клонирование объектов с открытыми ресурсами; prototype registries без дисциплины версий.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Явная семантика копирования.
- Concrete classes скрыты за clone interface.
- Замерьте стоимость setup до введения паттерна.
- Документируйте, какие поля можно разделять.