Sobes.tech
Back to questions
Junior — Middle
63

Можете объяснить принцип внедрения зависимостей в программный код и его основное предназначение?

Answer from AI

sobes.tech AI

Внедрение зависимостей (Dependency Injection, DI) — это паттерн, при котором объект получает свои зависимости извне, а не создаёт их самостоятельно. Это повышает модульность, тестируемость и гибкость кода.

Основное предназначение DI:

  • Разделение ответственности: класс не отвечает за создание зависимостей.
  • Упрощение тестирования: зависимости можно подменять на моки или стабы.
  • Повышение гибкости: легко менять реализации зависимостей без изменения кода класса.

Пример на C# с использованием конструктора:

public interface ILogger {
    void Log(string message);
}

public class ConsoleLogger : ILogger {
    public void Log(string message) {
        Console.WriteLine(message);
    }
}

public class UserService {
    private readonly ILogger _logger;

    public UserService(ILogger logger) {
        _logger = logger; // зависимость внедряется извне
    }

    public void CreateUser(string name) {
        // логика создания пользователя
        _logger.Log($"User {name} created.");
    }
}

// При создании UserService передаём нужную реализацию ILogger
var service = new UserService(new ConsoleLogger());