Sobes.tech
Back to questions
Junior — Middle
65

Какие подходы и техники обеспечивают соблюдение принципа инверсии зависимостей в проектировании системы?

Answer from AI

sobes.tech AI

Принцип инверсии зависимостей (Dependency Inversion Principle) в проектировании системы достигается следующими подходами и техниками:

  • Использование абстракций вместо конкретных реализаций. Классы должны зависеть от интерфейсов или абстрактных классов, а не от конкретных классов.
  • Внедрение зависимостей (Dependency Injection). Зависимости передаются в класс извне (через конструктор, свойства или методы), а не создаются внутри него.
  • Инверсия управления (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.");
    }
}

Такой подход облегчает тестирование, расширяемость и поддержку кода.