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