Back to questions
Junior — Middle
63
Могли бы вы привести пример, когда принцип D в SOLID применяется на практике?
Companies where asked
Dogma
Answer from AI
sobes.tech AI
Принцип D (Dependency Inversion Principle) в SOLID гласит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня напрямую, а оба должны зависеть от абстракций.
На практике в Android-разработке это часто реализуется через использование интерфейсов и внедрение зависимостей (Dependency Injection). Например, вместо того чтобы класс Activity напрямую создавал объект репозитория данных, он зависит от интерфейса репозитория, а конкретная реализация передаётся извне.
Пример:
interface UserRepository {
fun getUser(id: String): User
}
class UserRepositoryImpl : UserRepository {
override fun getUser(id: String): User {
// Получение пользователя из базы данных
}
}
class UserViewModel(private val userRepository: UserRepository) {
fun loadUser(id: String) {
val user = userRepository.getUser(id)
// обработка пользователя
}
}
Здесь UserViewModel зависит от абстракции UserRepository, а не от конкретной реализации, что облегчает тестирование и поддержку кода.