Back to questions
Junior — Middle
72
Объясните принцип внедрения зависимостей в программный код и его преимущества.
Companies where asked
Swiftfactory
Бренд Монитор
appfox
Answer from AI
sobes.tech AI
Внедрение зависимостей (Dependency Injection, DI) — это паттерн проектирования, при котором объект получает свои зависимости извне, а не создает их самостоятельно. Это повышает модульность и тестируемость кода.
Преимущества 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");