Sobes.tech
Back to questions
Junior — Middle
72

Объясните принцип внедрения зависимостей в программный код и его преимущества.

Companies where asked
Swiftfactory
Бренд Монитор
appfox

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.");
    }
}

// Использование:
var logger = new ConsoleLogger();
var service = new UserService(logger);
service.CreateUser("Alice");