В каком принципе SOLID не обойтись без интерфейсов

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

Ответ

Принцип Interface Segregation (ISP) требует разделения больших интерфейсов на более мелкие, чтобы клиенты не зависели от методов, которые они не используют. Без интерфейсов этот принцип невозможно реализовать.

Пример:

// Плохо: один интерфейс с избыточными методами
interface Worker {
    fun work()
    fun eat()
}

// Хорошо: разделение на специализированные интерфейсы
interface Workable {
    fun work()
}

interface Eatable {
    fun eat()
}

class Human : Workable, Eatable {
    override fun work() { /*...*/ }
    override fun eat() { /*...*/ }
}

class Robot : Workable {
    override fun work() { /*...*/ }
}