Какие плюсы и минусы подхода с общим интерфейсом для remote data source и local data source

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

Ответ

Плюсы:
✅ Единый контракт для работы с данными, упрощает замену источника
✅ Уменьшает дублирование кода в репозитории
✅ Позволяет легко добавлять кеширование или стратегии загрузки

Минусы:
❌ Может привести к избыточным методам в интерфейсе (не все операции нужны для обоих источников)
❌ Усложняет обработку специфичных ошибок (например, только для сети или БД)
❌ Требует аккуратного проектирования, чтобы не нарушать принцип разделения интерфейсов

Пример:

interface DataSource {
    suspend fun getUser(id: String): User
}

class RemoteDataSource : DataSource {
    override suspend fun getUser(id: String): User {
        // API call
    }
}

class LocalDataSource : DataSource {
    override suspend fun getUser(id: String): User {
        // DB query
    }
}