Repository — зачем изолировать источник данных?
Суть
Repository — протокол, который отвечает на вопрос «дай мне данные» и прячет, откуда они берутся: сеть, кэш в памяти, SwiftData/Core Data, файл. Остальной код (use case, ViewModel) знает только articles()/save(_:) и доменные типы, но не URLSession, DTO и схему БД.
Зачем:
- Подмена источника — переезд с REST на GraphQL или с Core Data на SwiftData не трогает экраны.
- Кэш и offline добавляются внутри репозитория, не меняя его клиентов.
- Тесты — fake-репозиторий с массивом в памяти вместо сети и БД.
- Одна точка для дедупликации запросов, инвалидации, маппинга DTO → доменная модель.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep