Что плохого если менять поведение класса

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

Ответ

Изменение поведения класса может нарушить принцип открытости/закрытости (Open/Closed Principle). Существующий код, зависящий от этого класса, может сломаться. Лучше расширять функциональность через наследование или композицию.

Пример плохого подхода:

class Logger {
    fun log(message: String) {
        println(message)  // Было так
        // Добавили запись в файл - ломаем существующих клиентов
        File("log.txt").appendText(message) 
    }
}

Лучше использовать стратегию:

interface Logger {
    fun log(message: String)
}

class ConsoleLogger : Logger {
    override fun log(message: String) = println(message)
}

class FileLogger : Logger {
    override fun log(message: String) {
        File("log.txt").appendText(message)
    }
}