Ответ
Data слой в Clean Architecture отвечает за работу с данными: получение, хранение и преобразование. Он состоит из:
- Repositories – абстракции над источниками данных (API, БД, кеш). Реализуют интерфейсы из Domain слоя.
- Data Sources – конкретные реализации работы с данными:
- Remote (Retrofit, GraphQL)
- Local (Room, SharedPrefs)
- Mappers – преобразуют модели данных между слоями (DTO ↔ Domain)
Пример репозитория:
class UserRepositoryImpl(
private val remote: UserRemoteDataSource,
private val local: UserLocalDataSource
) : UserRepository {
override suspend fun getUser(id: String): User {
val localUser = local.getUser(id)
return localUser ?: remote.getUser(id).also { local.saveUser(it) }
}
}
Ключевые принципы:
- Data слой зависит только от Domain
- Все зависимости инвертированы через DI
- Источники данных изолированы друг от друга