Sobes.tech
Junior — Middle
87

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

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, а не от интерфейса, что затрудняет замену или мокирование репозитория.