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

Пользуешься ли принципом инверсии зависимостей (Dependency Inversion Principle)

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

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

Пример без DIP:

python
class LightBulb:
    def turn_on(self):
        print("LightBulb: turned on")

class Switch:
def init(self, bulb: LightBulb):
self.bulb = bulb

text
def operate(self):
    self.bulb.turn_on()
text
Здесь `Switch` жестко зависит от `LightBulb`.  

**С 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), а не от конкретной реализации. Это упрощает расширение (например, добавление Fan без изменения Switch).

Использование DIP делает код гибче, тестируемее и легче для масштабирования.

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

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

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

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