Sobes.tech
Junior — Middle

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

sobes.tech AI

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

// При създаване на UserService, подаваме необходимата реализация на ILogger
var service = new UserService(new ConsoleLogger());