Ответ
Принцип 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() { /*...*/ }
}
Теперь классы реализуют только нужные им интерфейсы.