SOLID - I

Принцип инверсии зависимостей (Dependency Inversion Principle)

Этот принцип гласит, что классы должны зависеть от абстракций, а не от конкретных реализаций. Это позволяет сделать код более гибким и легким для изменения.

// Плохой пример: зависимость от конкретной реализации
class Database {
    fun saveData(data: String) {
        // Реализация сохранения данных в базе данных
    }
}

class DataManager {
    private val database = Database()

    fun saveData(data: String) {
        database.saveData(data)
    }
}

// Хороший пример: использование интерфейса и инверсии зависимостей
interface Database {
    fun saveData(data: String)
}

class RealDatabase : Database {
    override fun saveData(data: String) {
        // Реализация сохранения данных в базе данных
    }
}

class DataManager(private val database: Database) {
    fun saveData(data: String) {
        database.saveData(data)
    }
}