Sobes.tech
Back to questions
Junior — Middle
64

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

Companies where asked
appfox

Answer from AI

sobes.tech AI

Внедрение зависимостей (Dependency Injection, 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");

Таким образом, UserService не зависит от конкретной реализации логгера, что облегчает замену и тестирование.