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()
}
Такой подход позволяет легко менять источник данных (например, на локальную базу или мок для тестов), не меняя логику отображения, что соответствует принципу инверсии зависимостей.