Можешь привести пример использования принципа I в SOLID

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

Ответ

Принцип I (Interface Segregation) гласит, что клиенты не должны зависеть от интерфейсов, которые они не используют. Лучше создавать узкоспециализированные интерфейсы, чем один общий.

Пример:
Допустим, у нас есть интерфейс Worker с методами work() и eat(). Но если у нас есть робот (Robot), который не ест, он вынужден реализовывать ненужный метод. Вместо этого разделим интерфейсы:

interface Workable {
    fun work()
}

interface Eatable {
    fun eat()
}

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

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

Теперь классы реализуют только нужные им интерфейсы.