HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: dependency injection, di, s из solid, управление зависимостями, di-контейнер, mock/stub</p>
1 <p>Теги: dependency injection, di, s из solid, управление зависимостями, di-контейнер, mock/stub</p>
2 <p>В реальных приложениях практически каждый класс имеет немалое число зависимостей - других классов, на которые он рассчитывает для осуществления своих задач. Эти зависимости, в свою очередь, могут зависеть от других классов, и т.д.</p>
2 <p>В реальных приложениях практически каждый класс имеет немалое число зависимостей - других классов, на которые он рассчитывает для осуществления своих задач. Эти зависимости, в свою очередь, могут зависеть от других классов, и т.д.</p>
3 <p>В результате может получится достаточно большое и сложное дерево зависимостей, которое, если неправильно с ним работать, существенно осложнит понимание логики работы класса, тестирование и отладку.</p>
3 <p>В результате может получится достаточно большое и сложное дерево зависимостей, которое, если неправильно с ним работать, существенно осложнит понимание логики работы класса, тестирование и отладку.</p>
4 <p>И здесь на помощь приходит паттерн Dependency Injection, или, сокращенно, DI.</p>
4 <p>И здесь на помощь приходит паттерн Dependency Injection, или, сокращенно, DI.</p>
5 <h2>В чем его суть?</h2>
5 <h2>В чем его суть?</h2>
6 <p>Всё очень просто - все зависимости какого-то класса ему явно предоставляет некоторый внешний механизм, который обычно называется DI-контейнером.</p>
6 <p>Всё очень просто - все зависимости какого-то класса ему явно предоставляет некоторый внешний механизм, который обычно называется DI-контейнером.</p>
7 <p>Преимущества такого подхода очевидны: • Управление зависимостями вынесено во внешний класс, S из SOLID; • Все зависимости явно описываются и можно легко понять, что к чему относится; • При предоставлении зависимостей контейнер может легко их подменить для того, чтобы подставить<strong>mock/stub</strong>классы для тестирования; • Сильно понижается связанность классов, что ведёт к более чистому коду.</p>
7 <p>Преимущества такого подхода очевидны: • Управление зависимостями вынесено во внешний класс, S из SOLID; • Все зависимости явно описываются и можно легко понять, что к чему относится; • При предоставлении зависимостей контейнер может легко их подменить для того, чтобы подставить<strong>mock/stub</strong>классы для тестирования; • Сильно понижается связанность классов, что ведёт к более чистому коду.</p>
8  
8