Ответ
Repository находится в domain layer (слой домена). Он абстрагирует источники данных (например, локальную БД или API) и предоставляет чистый интерфейс для use cases.
Пример:
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 {
// Логика кеширования/обновления данных
}
}
Ключевые моменты:
- Не зависит от фреймворков (Android, Retrofit и т.д.)
- Содержит бизнес-логику работы с данными
- Реализуется в data layer, но интерфейс объявляется в domain