Sobes.tech
Back to questions
Junior — Middle
60

Что такое внедрение зависимостей и каковы его преимущества и недостатки при использовании в проекте?

Answer from AI

sobes.tech AI

Внедрение зависимостей (Dependency Injection, 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($"User {name} created.");
    }
}

// Использование
var logger = new ConsoleLogger();
var service = new UserService(logger);
service.CreateUser("Alice");