Встречается на собеседованиях • сегодня
Для чего нужна инверсия зависимостей
Инверсия зависимостей (Dependency Inversion Principle, DIP) — один из принципов SOLID, который гласит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей, детали должны зависеть от абстракций.
Зачем нужна:
- Уменьшает связанность кода.
- Упрощает тестирование (можно подменять зависимости моками).
- Делает код более гибким и расширяемым.
Пример без DIP:
python
class LightBulb:
def turn_on(self):
print("LightBulb: turned on")
class Switch:
def __init__(self):
self.bulb = LightBulb() # Жёсткая зависимость
def operate(self):
self.bulb.turn_on()Пример с DIP:
python
from abc import ABC, abstractmethod
class Switchable(ABC):
@abstractmethod
def turn_on(self):
pass
class LightBulb(Switchable):
def turn_on(self):
print("LightBulb: turned on")
class Switch:
def __init__(self, device: Switchable): # Зависимость от абстракции
self.device = device
def operate(self):
self.device.turn_on()Теперь Switch зависит от абстракции Switchable, а не от конкретной реализации LightBulb. Это позволяет легко добавлять новые устройства (например, Fan) без изменения кода Switch.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы