Ответ
В Data слое Clean Architecture на Android обычно используются следующие сущности:
- Repository - центральный компонент, который абстрагирует источники данных (например, API и БД) и предоставляет данные Domain слою.
- DataSource (Remote/Local) - интерфейсы или классы, работающие напрямую с API (Retrofit) или локальным хранилищем (Room, SharedPreferences).
- DTO (Data Transfer Object) - модели данных для сетевых запросов/ответов.
- Entity - модели данных для локального хранилища (например, Room Entity).
- Mappers - преобразуют DTO/Entity в Domain модели и обратно.
Пример Repository:
class UserRepositoryImpl(
private val remoteDataSource: UserRemoteDataSource,
private val localDataSource: UserLocalDataSource,
private val mapper: UserMapper
) : UserRepository {
override suspend fun getUser(id: String): User {
val localUser = localDataSource.getUser(id)
return if (localUser != null) {
mapper.mapToDomain(localUser)
} else {
val remoteUser = remoteDataSource.getUser(id)
localDataSource.saveUser(remoteUser)
mapper.mapToDomain(remoteUser)
}
}
}