Что такое паттерн Репозиторий (Repository)

Ответ

Репозиторий — это паттерн, который абстрагирует доступ к данным, предоставляя единый интерфейс для работы с разными источниками (БД, 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-репозитории