SOLID-D

D - Принцип разделения интерфейса (Interface Segregation Principle):

Этот принцип утверждает, что клиенты не должны зависеть от интерфейсов, которые они не используют. Вместо этого следует создавать маленькие и специфичные интерфейсы для каждого клиента.

// Плохой пример: нарушение принципа разделения интерфейса
interface Worker {
    fun work()
    fun eat()
}

class Engineer : Worker {
    override fun work() {
        // Реализация работы инженера
    }

    override fun eat() {
        // Реализация перерыва на обед
    }
}

// Хороший пример: использование маленьких интерфейсов
interface Workable {
    fun work()
}

interface Eatable {
    fun eat()
}

class Engineer : Workable, Eatable {
    override fun work() {
        // Реализация работы инженера
    }

    override fun eat() {
        // Реализация перерыва на обед
    }
}