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

Что означает D в SOLID

Dependency Inversion Principle (DIP) — принцип инверсии зависимостей.

Суть:

  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), а не от конкретной реализации.

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

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

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

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