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

Почему код нужно писать так, чтобы компоненты не зависели от реализации

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

Преимущества:

  • Легче заменять реализации без изменения зависимого кода
  • Упрощается тестирование (можно подменять реальные зависимости mock-объектами)
  • Код становится более гибким и переиспользуемым

Пример:

python
from abc import ABC, abstractmethod

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

class MySQL(Database):  # Конкретная реализация
    def save(self, data):
        print(f"Saving {data} to MySQL")

class Service:
    def __init__(self, db: Database):  # Зависим от абстракции
        self.db = db

# Можно легко подменить реализацию
service = Service(MySQL())
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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