Sobes.tech
Back to questions
Junior — Middle
65

Мог бы ты привести пример принципа D из принципов SOLID, показывающий его применение на практике?

Companies where asked
ЯндексЯндекс

Answer from AI

sobes.tech AI

Принцип D из SOLID — это Dependency Inversion Principle (Принцип инверсии зависимостей). Он гласит, что:

  • Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
  • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Пример на Android:

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

interface DataSource {
    fun getData(): String
}

class NetworkDataSource : DataSource {
    override fun getData() = "Данные из сети"
}

class DataPresenter(private val dataSource: DataSource) {
    fun present() {
        println(dataSource.getData())
    }
}

fun main() {
    val networkDataSource = NetworkDataSource()
    val presenter = DataPresenter(networkDataSource)
    presenter.present()
}

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