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

Что такое принцип Инверсии Зависимости

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

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

Пример без 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()

DIP уменьшает связанность кода, упрощает тестирование и расширение системы.

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

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

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

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