Встречается на собеседованиях • сегодня

Что означает слово инверсия в инверсии зависимости

Инверсия зависимости (Dependency Inversion Principle, DIP) — один из принципов SOLID, который гласит, что:

  1. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
  2. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Инверсия здесь означает изменение направления зависимости: вместо прямого обращения к конкретным классам, код зависит от интерфейсов/абстракций.

Пример:

python
from abc import ABC, abstractmethod

class Switchable(ABC):  # Абстракция
    @abstractmethod
    def turn_on(self):
        pass

class LightBulb(Switchable):  # Деталь
    def turn_on(self):
        print("Лампа включена")

class Fan(Switchable):  # Другая деталь
    def turn_on(self):
        print("Вентилятор включен")

class Switch:  # Модуль верхнего уровня
    def __init__(self, device: Switchable):  # Зависит от абстракции
        self.device = device

    def operate(self):
        self.device.turn_on()

# Использование:
bulb = LightBulb()
switch = Switch(bulb)
switch.operate()  # Лампа включена

Теперь Switch зависит от абстракции (Switchable), а не от конкретных классов. Это упрощает расширение кода.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы