Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

Зависимостите (Dependency Injection, DI) е шаблон за проектиране, при който обект получава своите зависимости отвън, вместо да ги създава сам. Това увеличава модулността и тестируемостта на кода.

Предимства на DI:

  • Улеснява тестването — зависимостите могат лесно да бъдат заменени с мock или stub.
  • Слабо свързване — класовете не зависят от конкретни реализации, а само от абстракции.
  • Повишава гъвкавостта — лесно е да се променят реализациите на зависимостите без да се променя кодът на потребителя.

Пример в 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($"Потребител {name} създаден.");
    }
}

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