Back to questions
Pyrus
Middle
5
Что такое инверсия зависимостей (принцип SOLID)?
Companies where asked
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.