Ответ
Принцип 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() { /*...*/ }
}