EMZETT.
Войти

Внедрение зависимостей (dependency injection)

Коротко: При внедрении зависимостей объекту передаётся то, что ему нужно, снаружи, вместо того чтобы создавать это самому, — обычно через конструктор.

Подробнее: В результате класс зависит только от интерфейса, а не от конкретной реализации. Конкретный вариант выбирается в одном центральном месте. Это снижает связанность, делает код заменяемым и лишь тогда по-настоящему тестируемым (модульные тесты получают моки вместо настоящих баз данных).

Подробности

# без DI: жёсткая привязка
class Report

См. также: SOLID, интерфейс, модульный тест, абстракция