Несколько слов о Dependency Injection | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Разработчик IoT
-13%
C# Developer. Professional
-9%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Java Developer. Professional JavaScript Developer. Professional Базы данных Android Developer. Professional Framework Laravel Cloud Solution Architecture Highload Architect Reverse-Engineering. Professional Vue.js разработчик Agile Project Manager VOIP инженер Scala-разработчик Супер-практикум по использованию и настройке GIT Symfony Framework Java Developer. Basic Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Экспресс-курс «IaC Ansible»
-10%
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Дизайн сетей ЦОД
-13%
NoSQL Основы Windows Server MS SQL Server Developer Инфраструктурная платформа на основе Kubernetes Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool"
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Несколько слов о Dependency Injection

iOS_Deep_10.10-5020-fa1af2.png

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

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

И здесь на помощь приходит паттерн Dependency Injection, или, сокращенно, DI.

В чем его суть?

Всё очень просто — все зависимости какого-то класса ему явно предоставляет некоторый внешний механизм, который обычно называется DI-контейнером.

Преимущества такого подхода очевидны: • Управление зависимостями вынесено во внешний класс, S из SOLID; • Все зависимости явно описываются и можно легко понять, что к чему относится; • При предоставлении зависимостей контейнер может легко их подменить для того, чтобы подставить mock/stub классы для тестирования; • Сильно понижается связанность классов, что ведёт к более чистому коду.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
1 комментарий
0

Добрый день. В чем разница между IOC (Inversion of Control) и Application Context? 1. IOC реализация AC 2. AC реализация IOC 3. это одно и тоже 4. Это концептуально разные вещи

Для комментирования необходимо авторизоваться