Назад к вопросам
Яндекс
Junior — Middle
82
Можете объяснить, что подразумевается под принципом инверсии зависимостей в объектно-ориентированном программировании?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Принцип инверсии зависимостей (Dependency Inversion Principle, DIP) — один из пяти принципов SOLID в объектно-ориентированном программировании. Он гласит:
- Модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависеть от абстракций.
- Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Это означает, что вместо того, чтобы класс напрямую создавал или использовал конкретные реализации других классов, он должен работать с абстракциями (например, интерфейсами или протоколами). Это повышает гибкость и облегчает тестирование.
Пример на Swift (iOS):
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Данные из API"
}
}
class ViewModel {
private let service: DataService
init(service: DataService) {
self.service = service
}
func load() {
print(service.fetchData())
}
}
let apiService = APIService()
let viewModel = ViewModel(service: apiService)
viewModel.load() // Выведет: Данные из API
Здесь ViewModel зависит от абстракции DataService, а не от конкретного APIService. Это позволяет легко заменить реализацию сервиса, например, на мок для тестов.