Strategy: как подменять алгоритм без if/switch по всему коду?
Суть
Strategy — семейство взаимозаменяемых алгоритмов за общим интерфейсом. Клиент получает стратегию снаружи и просто вызывает её, не зная, какая именно пришла. Вместо switch userType в десяти местах остаётся одна точка выбора (фабрика, конфиг, feature flag в composition root), а остальной код полиморфен.
В Swift у стратегии три формы: протокол — когда у алгоритма есть параметры, состояние, зависимости или несколько методов; замыкание — одна функция без конфигурации; enum — набор вариантов закрыт и известен заранее.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep