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

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

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

Пример на Python:

python
from abc import ABC, abstractmethod

class Database(ABC):  # Абстракция
    @abstractmethod
    def save(self, data):
        pass

class MySQL(Database):  # Низкоуровневый модуль
    def save(self, data):
        print(f"Saving {data} to MySQL")

class UserRepository:  # Высокоуровневый модуль
    def __init__(self, db: Database):  # Зависит от абстракции
        self.db = db
    
    def save_user(self, user_data):
        self.db.save(user_data)

Здесь UserRepository зависит от абстрактного Database, а не от конкретной MySQL - направление зависимости инвертировано.

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

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

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

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