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

Может ли работать Dependency Inversion без Dependency Injection

Dependency Inversion (DIP) и Dependency Injection (DI) — это разные, но связанные концепции. DIP — это принцип проектирования, который гласит, что модули высокого уровня не должны зависеть от модулей низкого уровня, а оба должны зависеть от абстракций. DI — это паттерн, реализующий DIP, передавая зависимости извне.

DIP без DI возможен, но менее удобен. Например, можно использовать фабрики или сервис-локаторы для создания зависимостей внутри класса, но это усложняет тестирование и нарушает чистоту DIP.

Пример без DI:

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

class UserService:
    def __init__(self):
        self.db = Database()  # Зависимость создается внутри

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

Пример с DI:

python
class UserService:
    def __init__(self, db: Database):  # Зависимость передается извне
        self.db = db

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

DI делает код гибче, но DIP можно соблюдать и без него, используя другие механизмы инверсии управления.

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

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

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

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