2. Паттерн проектирования "Прототип" | ООП 2025

В этой лекции разбираем паттерн «Прототип» — зачем он нужен, почему «ручное» копирование полей ломается, и как правильно клонировать полиморфные объекты. Покажем базовую реализацию, обобщённый CRTP-миксин PrototypeImpl, и почему наследование от конкретных классов — красный флаг. Усилим контракты концептами C++20. Во второй части — альтернативный путь через стирание типов с помощью std::any. Сравним скорость работы наивного и оптимизированного вариантов. Практические задания и примеры кода доступны на моем гитхабе:
Чтобы оставаться на связи в условиях блокировки Youtube в России подписывайтесь на мой Telegram-канал
Тайм-коды: 0:00 Структура паттерна прототип 4:12 Применение паттерна для клонирования фигур 6:26 Обобщенный mixin PrototypeImpl для устранения дублирования кода 17:26 Когда клонирование может быть эффективнее создания эффекта с нуля 19:15 Дорабатываем PrototypeImpl 22:57 Почему наследование от конкретного класса говорит о плохой архитектуре 27:22 Устраняем дублирование кода при помощи миксина PersonImpl 30:57 Добавляем немного шаблонной магии и концептов для усиления миксинов 38:54 Альтернативная реализация через стирание типов 47:43 Анализ производительности наивного решения 51:55 Оптимизируем доступ к std::any за счёт кеширования 55:41 Бенчмаркинг оптимизированной верси и В заставке использована композиция "Папа может в Си" музыкального коллектива "Научно-технический рэп" (https://vk.com/nii_rap)

Смотрите также