Back to questions
Junior — Middle
68
Могли бы вы объяснить принцип инверсии управления и его основное назначение?
Answer from AI
sobes.tech AI
Инверсия управления (Inversion of Control, IoC) — это принцип, при котором управление созданием и связыванием объектов передаётся внешнему контейнеру или фреймворку, а не реализуется напрямую в коде.
Основное назначение IoC — повысить гибкость и тестируемость приложения, снизить связанность компонентов.
Вместо того, чтобы класс сам создавал зависимости, они передаются ему извне (например, через конструктор). Это облегчает замену реализаций и упрощает поддержку.
Пример на C# с использованием внедрения зависимостей (Dependency Injection):
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.");
}
}
Здесь UserService не создаёт сам ILogger, а получает его извне, что реализует принцип инверсии управления.