Внедрение зависимостей - это паттерн, при котором зависимости объекта не создаются внутри класса, а передаются через конструктор, свойства или методы извне.

Используется в Веб-фреймоврках, тестировании, микросервисах и GUI-приложениях.

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

Пример плохой и хорошей зависимости: Плохая: `class UserService: def init(self): self.db = Database() # Жесткая зависимость

Хорошая: `class UserService: def init(self, db): # Зависимость внедряется извне self.db = db

#weekofpatterns``
repost

51

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь