Какие сущности Android используются в Data слое Clean Architecture

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

Ответ

В Data слое Clean Architecture на Android обычно используются следующие сущности:

  1. Repository - центральный компонент, который абстрагирует источники данных (например, API и БД) и предоставляет данные Domain слою.
  2. DataSource (Remote/Local) - интерфейсы или классы, работающие напрямую с API (Retrofit) или локальным хранилищем (Room, SharedPreferences).
  3. DTO (Data Transfer Object) - модели данных для сетевых запросов/ответов.
  4. Entity - модели данных для локального хранилища (например, Room Entity).
  5. 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)
        }
    }
}