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