Sobes.tech
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, а не от конкретной реализации, что облегчает тестирование и поддержку кода.