Sobes.tech
Back to questions
Junior — Middle
70

Можешь привести пример ситуации, когда принцип инверсии зависимостей нарушается?

Answer from AI

sobes.tech AI

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

Пример нарушения:

Если в Android-приложении Activity напрямую создает и использует конкретный класс для доступа к данным (например, конкретный репозиторий), то Activity зависит от конкретной реализации, а не от абстракции (интерфейса). Это усложняет тестирование и замену реализации.

class UserRepository {
    fun getUser() = "User"
}

class MainActivity : AppCompatActivity() {
    private val userRepository = UserRepository() // Прямая зависимость от конкретного класса

    fun showUser() {
        val user = userRepository.getUser()
        // ...
    }
}

Здесь нарушается принцип, потому что MainActivity зависит от конкретного UserRepository, а не от интерфейса, что затрудняет замену или мокирование репозитория.