Разберёмся, что такое внедрение зависимости (dependency injection), как оно связано с инверсией зависимости (dependency inversion), зачем нужны IoC-контейнеры, что такое антипаттерн Service Locator и почему иногда внедрение зависимостей ещё не означает, что мы получили слабо связанный и легко поддерживаемый код.