Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про C#: dependency, injection, inversion, solid

Пример из кода на Dependency Injection

Этот вопрос проверяет понимание принципа Dependency Injection и его практического применения для создания слабосвязанного кода.

Короткий ответ

Dependency Injection (DI) - это подход, когда зависимости объекта передаются извне, а не создаются внутри самого объекта. Это делает код более гибким и тестируемым. Например, вместо создания базы данных внутри класса, мы получаем ее через конструктор. Так мы можем легко подменить реальную базу данных на тестовую заглушку. DI помогает соблюдать принцип "программируй на уровне интерфейсов, а не реализаций".

Длинный ответ

Что такое Dependency Injection

Dependency Injection (внедрение зависимостей) - это паттерн проектирования, при котором объект получает свои зависимости извне, вместо того чтобы создавать их самостоятельно.

Основные преимущества

  • Гибкость кода: Легко менять реализации без изменения основного кода

  • Тестируемость: Просто подменять реальные зависимости на mock-объекты

  • Слабая связанность: Компоненты меньше знают друг о друге

Практический пример

Рассмотрим пример без DI и с DI:

Плохой подход (без DI)

csharp

public class PlayerController
{
    private AudioManager audioManager;
    
    public PlayerController()
    {
        audioManager = new AudioManager(); // Зависимость создается внутри
    }
    
    public void PlayJumpSound()
    {
        audioManager.Play("jump");
    }
}

Хороший подход (с DI)

csharp

public class PlayerController
{
    private IAudioManager audioManager;
    
    // Зависимость передается через конструктор
    public PlayerController(IAudioManager audioManager)
    {
        this.audioManager = audioManager;
    }
    
    public void PlayJumpSound()
    {
        audioManager.Play("jump");
    }
}

Типы внедрения зависимостей

  1. Через конструктор (самый распространенный)

  2. Через свойства

  3. Через методы

Когда использовать

  • Когда нужно тестировать компоненты изолированно

  • При работе со сложными системами зависимостей

  • Для соблюдения принципов SOLID

Вывод: Используйте Dependency Injection когда вам нужна гибкость, тестируемость и слабая связанность между компонентами.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • C#

    C#

Ключевые слова

#dependency

#injection

#inversion

#solid

Подпишись на Game Developer в телеграм