Sobes.tech
Middle
145
questionbank

Что такое инверсия управления и внедрение зависимостей?

Ответ от нейросети

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();
    }
}