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

Как связаны Dependency Injection и Dependency Inversion

Dependency Injection (DI) и Dependency Inversion Principle (DIP) связаны, но это не одно и то же.

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

DI — паттерн, реализующий DIP, позволяющий внедрять зависимости извне (через конструктор, метод или свойство), вместо их жесткого создания внутри класса.

Пример:

python
from abc import ABC, abstractmethod

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

class PostgresDB(Database):
    def save(self, data): print(f"Saving {data} to Postgres")

class Service:
    def __init__(self, db: Database):  # DI через конструктор
        self.db = db

    def process(self, data):
        self.db.save(data)

# Использование:
db = PostgresDB()
service = Service(db)  # Внедрение зависимости
service.process("test")

DI делает код гибким, тестируемым и соответствующим DIP.

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

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

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

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