Где будет лежать репозиторий в чистой архитектуре

«Где будет лежать репозиторий в чистой архитектуре» — вопрос из категории Архитектура, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В чистой архитектуре репозиторий находится в слое Data (или Repository), который является мостом между слоем Domain и источниками данных (например, сетью или локальной БД).

Пример интерфейса репозитория в Domain:

interface UserRepository {
    suspend fun getUser(id: String): User
}

И его реализация в Data:

class UserRepositoryImpl(
    private val remoteDataSource: RemoteDataSource,
    private val localDataSource: LocalDataSource
) : UserRepository {
    override suspend fun getUser(id: String): User {
        // Логика получения данных
    }
}

Ключевые моменты:

  • Domain зависит только от абстракции (интерфейса)
  • Data реализует этот интерфейс
  • Репозиторий инкапсулирует логику выбора источника данных (кеш, сеть и т.д.)