Ответ
Репозиторий — это паттерн, который абстрагирует доступ к данным, предоставляя единый интерфейс для работы с разными источниками (БД, API, кеш). Он скрывает детали реализации, упрощая тестирование и замену источников данных.
Пример на Kotlin:
interface UserRepository {
suspend fun getUser(id: String): User
}
class UserRepositoryImpl(
private val localDataSource: UserLocalDataSource,
private val remoteDataSource: UserRemoteDataSource
) : UserRepository {
override suspend fun getUser(id: String): User {
val localUser = localDataSource.getUser(id)
return localUser ?: remoteDataSource.getUser(id).also {
localDataSource.saveUser(it)
}
}
}
Ключевые преимущества:
- Изолирует бизнес-логику от деталей хранения
- Позволяет легко менять источники данных
- Упрощает кеширование и стратегии загрузки
- Облегчает тестирование через mock-репозитории