Ответ
Принцип разделения интерфейсов (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() { /*...*/ }
}
Преимущества:
- Уменьшает связанность
- Делает код более гибким
- Упрощает поддержку
- Позволяет избежать "пустых" реализаций методов