Sobes.tech
Back to questions
Middle
5

Что такое инверсия зависимостей (принцип SOLID)?

Companies where asked
PyrusPyrus

Answer from AI

sobes.tech AI

Инверсия зависимостей — это принцип из набора SOLID, который говорит, что:

  • Модули верхнего уровня не должны зависеть от модулей нижнего уровня напрямую.
  • И те, и другие должны зависеть от абстракций (например, интерфейсов).
  • Абстракции не должны зависеть от деталей, а детали должны зависеть от абстракций.

Это позволяет снизить связанность между компонентами, облегчить тестирование и поддержку кода.

Пример на 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.");
    }
}

Здесь UserService зависит от абстракции ILogger, а не от конкретной реализации ConsoleLogger. Это позволяет легко менять реализацию логгера без изменения UserService.