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

Что такое принцип DIP

Принцип DIP (Dependency Inversion Principle) — один из пяти 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), а не от конкретной реализации. Это делает код гибче и проще для тестирования.

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

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

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

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