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

Что такое dependency inversion principle

Принцип инверсии зависимостей (DIP) — один из SOLID-принципов, который гласит:

  1. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
  2. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

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

  • Уменьшает связанность кода.
  • Упрощает тестирование и замену реализаций.
  • Делает систему гибче и расширяемее.

Пример:

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 UserService:  # Модуль верхнего уровня
    def __init__(self, db: Database):  # Зависит от абстракции
        self.db = db

    def create_user(self, user_data):
        self.db.save(user_data)

# Использование
service = UserService(MySQL())
service.create_user({"name": "Alice"})

Здесь UserService зависит от абстракции Database, а не от конкретной СУБД.

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

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

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

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