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

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

Принцип инверсии зависимостей (DIP) гласит, что модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей — детали должны зависеть от абстракций.

Пример без DIP:

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

class Switch:
def init(self):
self.bulb = LightBulb() # Жесткая зависимость

text
def operate(self):
    self.bulb.turn_on()
text

Пример с 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, а не от конкретной реализации LightBulb. Это позволяет легко добавлять новые устройства без изменения кода Switch.

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

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

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

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