Может ли Interactor объединять результаты нескольких источников данных

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

Ответ

Да, Interactor может объединять данные из нескольких источников. Это одна из его ключевых задач в Clean Architecture.

Пример с RxJava:

class UserInteractor(
    private val localRepo: UserLocalRepository,
    private val remoteRepo: UserRemoteRepository
) {
    fun getUserData(): Single<UserData> {
        return Single.zip(
            localRepo.getCachedUser(),
            remoteRepo.fetchUser(),
            { cached, remote -> 
                // Merge logic
                UserData(cached.id, remote.name, cached.lastSeen) 
            }
        )
    }
}

Важные моменты:

  1. Interactor должен обрабатывать ошибки (например, fallback на локальные данные)
  2. Логика объединения должна быть простой и вынесена в Interactor
  3. Источники данных должны быть независимы (репозитории)