Middle
143
questionbank
Что такое инверсия управления и внедрение зависимостей?
Answer from AI
sobes.tech AI
Инверсия управления (IoC) — это принцип проектирования, при котором поток управления программы делегируется внешней структуре или компоненту, вместо того чтобы контролироваться непосредственно программным кодом.
Внедрение зависимостей (DI) — это шаблон проектирования, реализующий принцип IoC. Он позволяет передавать зависимости объекта извне, а не создавать их внутри самого объекта. Это достигается посредством конструкторов, свойств или методов.
Преимущества:
- Уменьшение связности между компонентами.
- Облегчение тестирования (например, с использованием моков).
- Повышение гибкости и возможности замены реализаций зависимостей.
Пример с DI через конструктор:
// Интерфейс зависимости
public interface IService
{
void DoSomething();
}
// Реализация зависимости
public class RealService : IService
{
public void DoSomething()
{
// Делаем что-то полезное
}
}
// Класс, зависящий от IService
public class MyClass
{
private readonly IService _service;
// Внедрение зависимости через конструктор
public MyClass(IService service)
{
_service = service;
}
public void Execute()
{
_service.DoSomething();
}
}