Junior — Middle
Explicați principiul Inversion of Control și modul în care acesta este legat de injecția de dependențe în aplicații.
sobes.tech AI
Răspuns de la AI
Inversion of Control (IoC) — это принцип, при котором управление созданием и связыванием зависимостей объектов передаётся внешнему контейнеру или фреймворку, а не реализуется внутри самих объектов.
Внедрение зависимостей (Dependency Injection, DI) — это конкретная реализация IoC, когда зависимости объекта передаются ему извне (например, через конструктор, сеттер или интерфейс).
Это позволяет:
- Упростить тестирование (легко подставлять моки или заглушки).
- Повысить модульность и переиспользуемость кода.
- Ослабить связанность компонентов.
Пример на 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.");
}
}
// В основном коде
ILogger logger = new ConsoleLogger();
UserService service = new UserService(logger);
service.CreateUser("Alice");
Здесь UserService не создаёт ConsoleLogger самостоятельно, а получает его извне, что соответствует принципу IoC.