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