Ответ
В чистой архитектуре репозиторий находится в слое 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 реализует этот интерфейс
- Репозиторий инкапсулирует логику выбора источника данных (кеш, сеть и т.д.)