В чем плюсы и минусы прямой зависимости от Repository

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

Ответ

Плюсы:

  • Простота и быстрота разработки – напрямую вызываем методы репозитория без лишних слоев
  • Подходит для небольших проектов с простой бизнес-логикой

Минусы:

  • Нарушение SOLID (SRP) – ViewModel/UI берет на себя логику управления данными
  • Сложность тестирования – зависимость от конкретной реализации репозитория
  • Проблемы с заменой источника данных (например, переход с Room на другой локальный источник)

Пример:

// Плохо: ViewModel зависит от репозитория напрямую
class MyViewModel(private val repo: UserRepository) : ViewModel() {
    fun loadUser() = repo.getUser() // Жесткая связь
}

// Лучше: использовать абстракцию (интерфейс)
class MyViewModel(private val userSource: UserDataSource) : ViewModel() {
    fun loadUser() = userSource.getUser()
}

Решение: Внедрять зависимости через интерфейсы и использовать DI (Dagger/Hilt).